【发布时间】:2017-01-25 10:51:25
【问题描述】:
我正在使用以下代码来读取二进制文件并使用结构来输出数据。但是,我知道我的数据只包含一条记录,而且似乎打印出许多记录。我想知道为什么会这样?
FILE *p;
struct myStruct x;
p=fopen("myfile","rb");
//printf("Rcords of file:\n");
while(1)
{
fread(&x,sizeof(x),1,p);
if(feof(p)!=0)
break;
printf("\n\nID:%ld",x.ID);
}
fclose(p);
return 0;
这样的结构是相当正常的:
struct myStruct
{
int ID;
char name[100];
}
【问题讨论】:
-
char name;没有意义。名称很少由单个字符组成。 -
文件有多大?
fread返回什么? -
我对您的问题完全不满意,即使您进行了编辑。发minimal reproducible example,我可能已经准备好进行谈判了。
-
您仍然可以告诉我们有关数据文件的信息:
ls -la myfile和wc myfile。还有fread()的返回值是多少。如果您不检查函数的结果,您如何期望您的程序正常工作。 -
fread是否返回1总是?