问题:
多路归并排序时,每次通过fread读取小文件里的一个double数据,通过feof判断是否读取结束,
结果,在最后总的排序文件中,每个小文件的最后一行的数据回重复一遍
原因:
feof只是检查标志位,如果是good则返回0,是bad就返回1。
更改标志位的fread函数,只有当它读不到东西了,才会把标志位从good变成bad,当fread读到最后一个字符时,由于读取是成功的,标志位没有变化,表示文件还能读,
实际上已经没有东西可读了,只有下次fread时才会发现
解决方法:
不要通过feof的值去判断是否到了文件尾,通过fread去判断
fread返回读取的字节数,如果返回0,说明读到了文件尾