为什么可以';是否使用fseek()访问EOF? #包括 int main() { 文件*fp=fopen(“introduct.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); 返回0; }
我试图访问文件末尾的EOF定位“文件位置指示器”。为什么可以';是否使用fseek()访问EOF? #包括 int main() { 文件*fp=fopen(“introduct.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); 返回0; },c,file,eof,C,File,Eof,我试图访问文件末尾的EOF定位“文件位置指示器”。 但是这个代码的结果是“000”。 为什么会发生这种情况?函数不会报告它处于EOF状态,除非您尝试读取一些数据,但没有数据可读取 您可以查找当前EOF之外的文件,该文件已打开以供写入(或已打开以供读取和写入) 有关为什么很少(如果曾经)需要使用feof()的更多信息,请参阅。在某些方面,feof()是一个你应该忘记的函数-如果你认为它不存在,你的大多数程序都会改进。在你尝试读取一些数据并且没有数据可读取之前,feof()函数不会报告它处于EOF
但是这个代码的结果是“000”。 为什么会发生这种情况?函数不会报告它处于EOF状态,除非您尝试读取一些数据,但没有数据可读取 您可以查找当前EOF之外的文件,该文件已打开以供写入(或已打开以供读取和写入) 有关为什么很少(如果曾经)需要使用
feof()
的更多信息,请参阅。在某些方面,feof()
是一个你应该忘记的函数-如果你认为它不存在,你的大多数程序都会改进。在你尝试读取一些数据并且没有数据可读取之前,feof()
函数不会报告它处于EOF
您可以查找当前EOF之外的文件,该文件已打开以供写入(或已打开以供读取和写入)
有关为什么很少(如果曾经)需要使用feof()
的更多信息,请参阅。在某些方面,feof()
是一个你应该忘记的函数-如果你认为它不存在,你的大多数程序都会得到改进。非常清楚(强调我的):
此函数仅报告most报告的流状态
最近的I/O操作,它不会检查关联的数据源。
例如,如果最近的I/O是fgetc
,则返回
文件的最后一个字节,feof
返回零下一个fgetc
失败并且
将流状态更改为文件结尾。只有当feof
返回
非零。
在典型用法中,输入流处理在出现任何错误时停止<代码>feof和
然后使用ferror来区分不同的错误
条件
非常清楚(强调我的):
此函数仅报告most报告的流状态
最近的I/O操作,它不会检查关联的数据源。
例如,如果最近的I/O是fgetc
,则返回
文件的最后一个字节,feof
返回零下一个fgetc
失败并且
将流状态更改为文件结尾。只有当feof
返回
非零。
在典型用法中,输入流处理在出现任何错误时停止<代码>feof和
然后使用ferror来区分不同的错误
条件
必须从文件中读取以获得EOF。7.21.9.2 fseek函数p5清除流的文件结束指示符,然后建立新位置。必须从文件中读取以获得EOF。7.21.9.2 fseek函数p5清除流的文件结束指示符,然后建立新位置。
#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;
}