[转载]feof多输出的原因 多出FF
这是我在CSDN上看到的文章,刚才看到HJin的question about fputc and feof
下面鉴转载以下文章,以供大家分享学习
feof()大多用宏来实现:#define feof(f) ((f)->flags & _F_EOF)。
而_F_EOF是在fgetc,getc()等函数或宏读完最后一个字符读到末尾读不到东西了才进行置位的,此时get等即返回EOF,因此用!foef()进行循环时一般会多循环一次。
while(!feof(fp))
{
printf("%X",fgetc(fp));
printf("\n");
}
结果会多出FFFFFFFF
是因为最后返回EOF(-1 即FFFFFFFF)
正确的写法是
c=fgetc(fp);
while(!feof(fp))
{
printf("%X",c);
c=fgetc(fp);
}