zoukankan      html  css  js  c++  java
  • C feof

    功能:检测流上的文件结束符。如果文件结束,则返回非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的时候要多多注意。

  • 相关阅读:
    ServletContext
    PS切图
    session实战案例
    Array Destruction
    Session详解
    No More Inversions 全网最详细 回文序列的逆序对
    Sum of Paths (DP、预处理)
    cookie详解
    web的状态管理
    简单最大流/最小割复习
  • 原文地址:https://www.cnblogs.com/alsofly/p/3725246.html
Copyright © 2011-2022 走看看