码迷,mamicode.com
首页 > 其他好文 > 详细

C feof

时间:2014-05-16 21:39:20      阅读:407      评论:0      收藏:0      [点我收藏+]

标签:c   int   a   文件   amp      

功能:检测流上的文件结束符。如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()清除。

正确的应该是feof返回0表示文件没有结束,返回1,表示结束。
feof实际观察的是上次读操作的内容,也就是上次读操作fread返回的值,如果读操作的返回值表明读取的不是空,那feof就返回0,如果上次读操作失败了,则feof返回1,表示读取完了。而fread返回值是表示正确读取的块数,如果不够,则返回0。那么我们看一下下面的程序:
while(1){
  if(feof(fp1))

  {
    break;
  }
  tmpint=fread(&(tmp[k]),1,1,fp1);
  k++;
}
如果fp1指向的文件有256个字节,那么运行结束后,k的值为257。原因是由于在fread读取k=255的时候,文件其实就应该完了,但是fread在k=255这次读取中,其返回值是1,因此进入k=256循环后,feof仍然返回的是0。因此k++也会再执行一次,因此,k变成了257。当进入k=257循环内,feof发现上次读操作失败了,因为上次fread返回了0,此刻break。最后k=257,比实际的文件大小大了一。所以在用feof的时候要多多注意。

C feof,布布扣,bubuko.com

C feof

标签:c   int   a   文件   amp      

原文地址:http://www.cnblogs.com/alsofly/p/3725246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!