我打开了一个文件,在指针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/

10-10 20:56