fread feof 文件尾读取重复的问题


问题:

 多路归并排序时,每次通过fread读取小文件里的一个double数据,通过feof判断是否读取结束,

 结果,在最后总的排序文件中,每个小文件的最后一行的数据回重复一遍


原因:

  feof只是检查标志位,如果是good则返回0,是bad就返回1。

  更改标志位的fread函数,只有当它读不到东西了,才会把标志位从good变成bad,当fread读到最后一个字符时,由于读取是成功的,标志位没有变化,表示文件还能读,

  实际上已经没有东西可读了,只有下次fread时才会发现


解决方法:

   不要通过feof的值去判断是否到了文件尾,通过fread去判断

   fread返回读取的字节数,如果返回0,说明读到了文件尾

阅读更多

没有更多推荐了,返回首页