c语言 while(!feof(fp)) fread()

#define PATH "d:\\ja.dat"
put()
{FILE *fp;
friend a;
int k;
fp=fopen(PATH,"r");
while(!feof(fp))
{fread(&a,sizeof(friend),1,fp);
printf("fp=%ld\n",ftell(fp));
printf("%s%ld%s",a.name,a.age,a.adr);
}}

为什么在PATH里的最后一条数据读出两次
PATH 里面有lijing 198969 ffgg
liming 159636 afag
但是用上面的读出来的却是lijing 198969 ffgg
liming 159636 afag
liming 159636 afag
为什么啊,我快疯了

第1个回答  2012-07-18
你把第一或第二个printf("*******"); 先后去掉一个, 注意找下是第一个打印语句还是第二个语句的问题,再你结合你的全部源码分析下,应该能找出原因的 , 毕竟就两个打印句,(我也不太懂 不好意思哈 )
相似回答