简单来说,直接使用while (!feof(file))来逐行读取txt是错误的,会在逐行读取文件的末尾比文件内容多一行。至于读取到什么,看你的buffer有没有每次做memset,如果有那么读取到空的;如果没有,读取到上一行的数据。
原理上,feof()操作是主动去查看文件流指针file是否到达了EOF。执行这个判断时并没有“进行下一次读取”。因此,即便已经读取完了文件最后一行,因为feof()不会把文件流指针file前移,因此得到的判断仍然是“现在不是EOF”。进而执行下一行的读取(不正确的读取)。
其实文件系统也好,并发也好,我们应该直接去读取,然后判断读取后的返回值是否为EOF或别的;而不是先去查询当前是否为EOF,然后再读取。
逐行读取txt文件
可参考:
#include <stdio.h>
#include <string.h>
int main(){

博客讨论了在C语言中使用feof()函数逐行读取txt文件时可能出现的问题,即在文件末尾多读一行。建议直接根据读取返回值判断是否到达文件末尾,提供了一个安全的读取示例代码,强调了在读取文件时应当检查读取操作本身的返回值。
最低0.47元/天 解锁文章
845

被折叠的 条评论
为什么被折叠?



