我打开了一个文件,在指针ptr
的地址处找到了流。我正在尝试查看文件是否为空。使用以下
if (fgetc(ptr) != EOF)
可以正常工作。如果文件为空,则不执行该语句。如果文件不为空,则不执行该语句。
但是,使用
if (!feof(ptr))
始终执行该语句。
为什么会这样?有没有办法使用
feof
函数? 最佳答案
就在这里。输入函数返回的值指示没有更多输入要处理后,可以调用feof()
和/或ferror()
以确定条件是由于到达输入末尾还是某些错误情况引起的。
这是feof()
和ferror()
函数的唯一有效用法。
指示没有更多输入剩余的结果因一个功能而异。例如,fgets()
返回值EOF
,而fread()
返回的值小于请求的记录数。您需要阅读每个输入函数的文档,以了解其工作原理。
关于与== EOF和feof的混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36164718/