本文主要讲讲当feof遇到fgets时,发生的尴尬故事!
先来一起看一个比较经典的错误代码:
while (!feof(fp)) {
fgets(buf, sizeof(buf), fp);
printf("%s", buf);
}
咋一眼看,貌似没啥问题啊,先判断文件fp是否结束,如果没有结束,则读取文件内容到buf,然后输出buf到标准输出,再判断fp是否结束,如此循环最后文件fp的所有内容都输出到标准输出。
但是,实际运行却发现文件的最后一行重复输出了一次,例如文件的内容是
参考链接:
薛非老师的《 会错意表错情,搭错车上错床——“度日如年”的故事及“feof()”的故事》