Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Чтение из файла С++


Рекомендуемые сообщения

При работе программы открывается окно командной строки и возникает ошибка Windows, в которой предлагается отправить отчет. Помогите разобраться, что не так!

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

FILE *fp;

char name[12];

if((fp=fopen("MYFILE","r"))=NULL)

{

puts("Ne otrkyt fail");

system("PAUSE");

exit(0);

}

while(fgets(name,12,fp)!=NULL)

{

printf(name);

}

fclose(fp);

system("PAUSE");

return EXIT_SUCCESS;

}

Ссылка на комментарий
Поделиться на другие сайты

little_greg:

Ты все время спотыкаешься на одной и той же строке:

if((fp=fopen("MYFILE","r"))=NULL)

Вместо сравнения с NULL тут записано присваивание. Паскаль бы сразу нашел ошибку, но C++ доверяет программисту почти безоговорочно и постарается истолковать и выполнить даже явные опечатки.

Оффтоп
Программирование гораздо ближе к труду писателя, чем к математике. Это перевод с русского языка на язык программирования, и горе пишущему с ошибками :).
Ссылка на комментарий
Поделиться на другие сайты

"Ты все время спотыкаешься на одной и той же строке:

if((fp=fopen("MYFILE","r"))=NULL)

Вместо сравнения с NULL тут записано присваивание. Паскаль бы сразу нашел ошибку, но C++ доверяет программисту почти безоговорочно и постарается истолковать и выполнить даже явные опечатки." - это просто капец!!!

Когда я записываю структуру в файл, у меня в файл записывается только одно значение, к примеру, в этой программе записывается в файл только то, что записывается в качестве названия диска (disc.name). Разве так должно быть? Но когда считываю из этого файла структуру, считываются все введенные данные.

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

FILE *fp;

struct CD

{

char name[20];

char description[40];

char category[12];

float cost;

int number;

} disc;

char filename[25];

printf("Vvedite imya faila, kotoryi zhelaete sozdat: ");

gets(filename);

if((fp=fopen(filename,"w"))==NULL)

{

printf("Ne otkryt fail %s\n",filename);

system("PAUSE");

exit(0);

}

printf("Vvedite svedeniya o diske\n");

printf("Vvedite nazvanie diska: ");

gets(disc.name);

while(strlen(disc.name)>0)

{

printf("Vvedite opisanie diska: ");

gets(disc.description);

printf("Vvedite categoriyu: ");

gets(disc.category);

printf("Vvedite cenu: ");

scanf("%f",&disc.cost);

printf("Vvedite nomer yacheiki: ");

scanf("%d",&disc.number);

fwrite(&disc,sizeof(disc),1,fp);

getchar();

putchar('\n');

printf("Vvedite nazvanie: ");

gets(disc.name);

}

fclose(fp);

system("PAUSE");

return EXIT_SUCCESS;

}

Ссылка на комментарий
Поделиться на другие сайты

С чего ты взял, что записывается только название диска, если потом можно считать из этого файла и всё остальное? Тут всё должно нормально записываться в файл, ты можешь его открыть обычным редактором как текстовый и убедиться в этом (только имей в виду, что в незаполненных введенной информацией частях строк будет всякий мусор). И я не понимаю, на что ты жалуешься, если "когда считываю из этого файла структуру, считываются все введенные данные".

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Я просто открывал файл в DEV C++, там записывалась только 1 строка, щас попробовал в блокноте открыть все нормально. СПС.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...