Jump to content

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


Recommended Posts

При работе программы открывается окно командной строки и возникает ошибка 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;

}

Link to comment
Share on other sites

little_greg:

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

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

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

Оффтоп
Программирование гораздо ближе к труду писателя, чем к математике. Это перевод с русского языка на язык программирования, и горе пишущему с ошибками :).
Link to comment
Share on other sites

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

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;

}

Link to comment
Share on other sites

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

Edited by Тролль
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...