为什么fread返回零,以及文件何时包含内容

时间:2019-07-07 12:32:37

标签: c file structure binaryfiles symbol-table

im试图读取文件“ 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 个答案:

答案 0 :(得分:2)

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

您打开文件时要从其末尾进行写入,而不是对其进行读取,因此while((fread(&a,sizeof(struct node),1,fp))==1)中的测试立即为假,您可以不打印“贝洛”

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

并检查 fp 不是NULL。

fseek 是没有用的,当您打开它时,它就处于开始状态

别忘了关闭文件


如果您需要使用“ rb +”标志打开它进行读写,则 fseek 仍然没有用。

相关问题