【发布时间】:2022-01-06 23:56:32
【问题描述】:
当文件结束或输入错误发生时,fgetc()肯定会返回EOF。
仅此而已,这是否意味着没有更多数据可用?
FILE *inf = ...;
int ch;
while ((ch = fgetc(inf)) != EOF) {
;
}
if (feof(inf)) puts("End-of-file");
else if (ferror(inf)) puts("Error");
else puts("???");
使用feof(), ferror() 进行测试是否足够?
注意:EOF 这里是一个宏,它的结果是一些负的int,通常是-1。它不是文件结尾的同义词。
我发现 some questions and more 与这个问题很接近,但没有一个能列举所有可能性。
【问题讨论】:
-
我确实期待其他答案(在这个“回答我自己的问题”中不仅仅是我自己的答案)。
-
另外,我的解释是
feof()在阅读 eof 时是ferror()的补充,但这可能是一个有缺陷的假设。 -
@Neil John Bollinger 回答相关问题可能会有用。