Почему fread возвращает ноль и когда файлы имеют содержимое - PullRequest
0 голосов
/ 07 июля 2019

я пытаюсь прочитать содержимое файла "sym.dat", даже если в файле есть содержимое, fread возвращает ноль, и я тоже пытался использовать ferror, но он не показывал никакой ошибки.

FILE *fp;
fp=fopen("sym.dat","ab");

struct node a;
    fseek(fp, 0L, SEEK_SET); 

while((fread(&a,sizeof(struct node),1,fp))==1)
{

printf("bello");

}}

возвращает 0

1 Ответ

2 голосов
/ 07 июля 2019

делает

 fp=fopen("sym.dat","ab");

вы открываете файл для записи в него с конца, а не для чтения в нем, поэтому проверка в while((fread(&a,sizeof(struct node),1,fp))==1) сразу ложна и вы не печатаете "Белло" «

сделать

fp=fopen("sym.dat","rb");

и проверьте, что fp не равен NULL.

fseek бесполезен, когда вы открываете его, вы находитесь в его начале

Не забудьте закрыть файл


Если вам нужно прочитать и написать в нем, откройте его с флагами "rb +", fseek все еще бесполезен.

...