Форум программистов, компьютерный форум CyberForum.ru

Выдает ошибку - C++

Восстановить пароль Регистрация
 
 
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 19:15     Выдает ошибку #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string>
 
 
using namespace std;
 
 
struct NOTE {
    char surname[20]; 
    char name[10]; 
    int phone;
    char birthday[10]; 
} ;
 
void main () 
{
    FILE* f;
    NOTE base[3];
    if (f = fopen("base.txt","w")==NULL)exit(1);
    int i,j;
    for(i=0; i<4;i++) { 
    cout<<"\nSurname: ";
    cin>>base[i].surname;
    cout<<"\nName: ";
    cin>>base[i].name;
    cout<<"\nPhone: ";
    cin>>base[i].phone;
    cout<<"\nBirthday: ";
    cin>>base[i].birthday;
 
fwrite((&i),sizeof(base),1,f);
if (ferror(f)==NULL) exit(2);
fclose(f);
}
 
 
system("Pause");
 
}
Миниатюры
Выдает ошибку  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 19:15     Выдает ошибку
Посмотрите здесь:

выдает ошибку C++
выдает ошибку C++
C++ С++ выдает ошибку
выдает ошибку( C++
Выдает ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.02.2014, 20:10     Выдает ошибку #21
Цитата Сообщение от Diman_ Посмотреть сообщение
Я хочу записать в файл структуру
так пожалуйста, KOPOJI, имеет виду что файл закроется после первой итерации... его после цикла закрывать надо, а запись fwrite(&base[i] ,sizeof(base),1,f); наверное?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 20:12  [ТС]     Выдает ошибку #22
ну да, запись
KOPOJI
05.02.2014, 20:14
  #23

Не по теме:

Diman_, вы троллите?

mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.02.2014, 20:15     Выдает ошибку #24
Цитата Сообщение от Diman_ Посмотреть сообщение
ну да, запись
а у Вас чего посмотрите записать пытаетесь кусок памяти в размере sizeof(base) а указатель начиная с ячейки где размещена переменная i.
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 20:15  [ТС]     Выдает ошибку #25
нет, мне реально нужна помощь, а я не пойму что делать.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.02.2014, 20:22     Выдает ошибку #26
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string>
 
 
using namespace std;
 
 
struct NOTE {
    char surname[20]; 
    char name[10]; 
    int phone;
    char birthday[10]; 
} ;
 
void main () 
{
    FILE* f;
    NOTE base[3];
    if ((f = fopen("base.txt","w"))==NULL) exit(1);
    int i,j;
    for(i=0; i<2;i++) { 
    cout<<"\nSurname: ";
    cin>>base[i].surname;
    cout<<"\nName: ";
    cin>>base[i].name;
    cout<<"\nPhone: ";
    cin>>base[i].phone;
    cout<<"\nBirthday: ";
    cin>>base[i].birthday;
 
fwrite(&base[i] ,sizeof(base),1,f);
}
 
 
fclose(f); 
 
system("Pause");
 
}
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.02.2014, 20:23     Выдает ошибку #27

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
programina, и? Я вообще не пользуюсь виндой, но все равно не отрицаю того, что conio.h есть (не везде, но есть)
В несуществующий раздел С++ под виндовс


[/CPP]
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.02.2014, 20:25     Выдает ошибку #28
Если не напутал

Добавлено через 1 минуту
Цитата Сообщение от programina Посмотреть сообщение
В несуществующий раздел С++ под виндовс

Не по теме:

Ну уж не надо так категорично, мы Windows-чане народ в целом не плохой, чтоб нас сразу в ссылку

KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,353
05.02.2014, 20:28     Выдает ошибку #29
Diman_, ну вот смотрите, представьте такую тупую, но как раз в тему ситуацию. Допустим, вам надо проехать три круга на машине, причем перед каждым новым кругом отчитываться, а затем опять ехать. Вот эта поездка по кругу - ваш цикл, каждый новый круг - новая итерация цикла. Какими должны быть ваши действия действия:

Вообще, тут возможно два варианта. Первый, который реализовали вы:

Как должно быть:
1. Перед первым кругом завели двигатель (открыли файл с помощью fopen)
2. Проехали круг (cin-cout)
3. Отчитались перед начальством (fwrite)
4. Заглушили двигатель (fclose)
5. Возврат к пункту 1 - завести двигатель
....
Как у вас:
1. Перед первым кругом завели двигатель (открыли файл с помощью fopen)
2. Проехали круг (cin-cout)
3. Отчитались перед начальством (fwrite)
4. Заглушили двигатель (fclose)
5. Возврат к пункту 1 - завести двигатель Возврат к пункту 2 - проехать круг (с неработающим двигателем)
.....

Второй вариант, зачастую, более правильный:
1. Перед первым кругом завели двигатель (открыли файл с помощью fopen)
2. Проехали круг (cin-cout)
3. Отчитались перед начальством (fwrite)
4. Заглушили двигатель (fclose)
5. Возврат к пункту 1 - завести двигатель

4. Возврат к пункту 2 - проехать следующий круг.


Я не знаю, как еще это можно объяснить. З.Ы. код можно написать как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <cstdlib>
#include <cstdio>
 
using namespace std;
 
struct NOTE {
    char surname[20]; 
    char name[10]; 
    int phone;
    char birthday[10]; 
} ;
 
const int ELEMENTS_COUNT = 3;
 
 
int main () 
{
    FILE *f;
    int i;
    NOTE base[ELEMENTS_COUNT];
    if ((f = fopen("base.txt","w"))==NULL)
    exit(1);
 
    for(i=0; i<ELEMENTS_COUNT;i++)
    { 
        cout<<"\nSurname: ";
        cin>>base[i].surname;
        cout<<"\nName: ";
        cin>>base[i].name;
        cout<<"\nPhone: ";
        cin>>base[i].phone;
        cout<<"\nBirthday: ";
        cin>>base[i].birthday;
 
        fwrite(&base[i], sizeof(base), sizeof(base[0]),f); 
        
        if (ferror(f)!=0)
            exit(2);
    }
    fclose(f);
 
    system("pause");
 
    exit(EXIT_SUCCESS);
}
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 20:30  [ТС]     Выдает ошибку #30
Спасибо!) А почему оно в тот файл не понятное чет записывает?
мне нужно будет просто читать тот файл и удалить с него, а потом добавить, а там

"ўЇў*Ї МММММММММММММ*ўЇў*Ї МММММD 2 ММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММ*ўЇ*ўЇ МММММММММММММ*Їў*Ї ММММММММММ МММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММММшфхММММ«иЁЫ,ь Я9  ђF. 8. [пЁЫ "
KOPOJI
05.02.2014, 20:30
  #31

Не по теме:

хм, опоздал чуток

mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
05.02.2014, 20:32     Выдает ошибку #32
KOPOJI, Напутал я правильно fwrite(&base[i], sizeof(base), sizeof(base[0]),f);

Добавлено через 1 минуту
Цитата Сообщение от Diman_ Посмотреть сообщение
Спасибо!) А почему оно в тот файл не понятное чет записывает?
мне нужно будет просто читать тот файл и удалить с него, а потом добавить, а там
А вы бинарным кодом структуру то записали это то как ваши переменные в памяти выглядят если их символы перевести.....
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,353
05.02.2014, 20:44     Выдает ошибку #33
Diman_, если требуется таким образом, то можете записывать данные в файл с помощью fprintf, например. Замените вашу строчку с fwrite на такую, например
C++
fprintf(f, "%s | %s | %d | %s\n", base[i].surname, base[i].name, base[i].phone, base[i].birthday);
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 20:44  [ТС]     Выдает ошибку #34
Теперь вот что выдает
Миниатюры
Выдает ошибку  
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
05.02.2014, 20:50     Выдает ошибку #35
Цитата Сообщение от Diman_ Посмотреть сообщение
Теперь вот что выдает
исправленный листинг покажи
Цитата Сообщение от Diman_ Посмотреть сообщение
int phone;
сколько цифр в номере телефона?
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 20:55  [ТС]     Выдает ошибку #36
Вот. ввожу 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string>
 
 
using namespace std;
 
 
struct NOTE {
    char surname[20]; 
    char name[10]; 
    int phone;
    char birthday[10]; 
} ;
 
void main () 
{
    FILE* f;
    NOTE base[3];
    if ((f = fopen("base.txt","w"))==NULL) exit(1);
    int i,j;
    for(i=0; i<2;i++) { 
    cout<<"\nSurname: ";
    cin>>base[i].surname;
    cout<<"\nName: ";
    cin>>base[i].name;
    cout<<"\nPhone: ";
    cin>>base[i].phone;
    cout<<"\nBirthday: ";
    cin>>base[i].birthday;
 
fwrite(&base[i], sizeof(base), sizeof(base[0]),f);
}
 
 
fclose(f); 
 
system("Pause");
 
}
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
05.02.2014, 21:10     Выдает ошибку #37
Цитата Сообщение от Diman_ Посмотреть сообщение
NOTE base[3];
в массиве 3 записи
Цитата Сообщение от Diman_ Посмотреть сообщение
for(i=0; i<2;i++)
записываем 2 0 и 1
Цитата Сообщение от Diman_ Посмотреть сообщение
ввожу 5
в смысле?
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 21:16  [ТС]     Выдает ошибку #38
Цитата Сообщение от ValeryS Посмотреть сообщение
в смысле?
спрашивали скок цифр в номере телефона
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
05.02.2014, 21:17     Выдает ошибку #39
Цитата Сообщение от Diman_ Посмотреть сообщение
fwrite(&base[i], sizeof(base), sizeof(base[0]),f);
и что ты тут записываешь
size_t fwrite(const void *buf, size_t size, size_t count, FILE *stream);
buf адрес блока у тебя &base[i] правильно
size размер блока у тебя sizeof(base) размер массива
count количество записей( блоков) у тебя sizeof(base[0]), размер структуры

C++
1
fwrite(&base[i], sizeof(base[0]),1,f);
можно так
C++
1
fwrite(&base[i], sizeof(NOTE),1,f);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2014, 21:27     Выдает ошибку
Еще ссылки по теме:

Выдает ошибку C++
Выдает ошибку C++
Ошибку выдает // C++ Builder C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58
05.02.2014, 21:27  [ТС]     Выдает ошибку #40
Спасибо) а можете еще помочь с тем как удалить все элементы с заданным возрастом, добавить элемент после элемента с заданным номером?
Yandex
Объявления
05.02.2014, 21:27     Выдает ошибку
Ответ Создать тему
Опции темы

Текущее время: 03:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru