This question already has answers here:
Closed 3 years ago.
Why is “while ( !feof (file) )” always wrong?
(4个答案)
#include <stdio.h>

int main()
{
    FILE * fp = fopen("Introduce.txt","rt");

    fseek(fp,0,SEEK_END);
    int i = feof(fp);
    printf("%d",i);

    fseek(fp,1,SEEK_END);
    i = feof(fp);
    printf("%d",i);

    fseek(fp,-1,SEEK_END);
    i = feof(fp);
    printf("%d",i);

    return 0;
}

我试图访问文件末尾的EOF定位“文件位置指示器”。
但这个代码的结果是“000”。
为什么会这样?

最佳答案

feof()函数在您尝试读取一些数据并且没有要读取的数据之前不会报告它处于EOF。
您可以在打开供写入(或打开供读取和写入)的文件的当前EOF之外进行查找。
请参见while (!feof(file)) is always wrong以获取有关为什么您不需要使用feof()的更多信息。在某些方面,feof()是一个你应该忘记的函数——如果你假设它不存在,大多数程序都会改进。

关于c - 为什么我不能使用fseek()访问EOF? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40115160/

10-09 17:02