看到一段程序不知道文件指针在循环里是怎么移动的???
while(!feof($fp)

 echo fgets($fp);

前面文件已经打开,循环完又关闭了,求技术男神指点…

解决方案 »

  1.   

    文件指针永远指向最后一次读取后的位置,也就是下一次读取开始的位置
    文件指针可以用 fseek 改变,可以用 ftell 获取
      

  2.   

    谢谢您哦~请问一下这个小段程序是对的吗?fgets的指针是一次走一行吗?feof的指针是一次一个字节,那这个循环是怎么控制的呢???
      

  3.   

    谢谢您哦~请问一下这个小段程序是对的吗?fgets的指针是一次走一行吗?feof的指针是一次一个字节,那这个循环是怎么控制的呢???
      

  4.   

    fgets 一次读取一行,读完后指针在行尾的换行符后面
    feof 只检查指针是否越过了文件尾,并不改变指针的值当 fgets 读取的是最后一行且改行是以换行符结束时,你的循环还会走一轮
    你可这样观察到while(! feof($fp))
    {
     echo fgets($fp), '-|';
    }......
    -|-|
      

  5.   

    fgets每执行一次,都会把文件指针移动到行尾的。
    而feof是判断指针是否已移动到文件结尾。