feof
来自cppreference.com
定义于头文件 <stdio.h>
|
||
int feof( FILE *stream ); |
||
检查是否已抵达给定文件流的结尾。
参数
stream | - | 要检验的文件流 |
返回值
若已抵达流尾则为非零值,否则为 0
注意
此函数仅报告最近一次 I/O 操作所报告的流状态,而不检验关联的数据源。例如,若最近一次 I/O 是抵达文件最后字节的 fgetc ,则 feof
返回零。下个 fgetc 失败并更改流状态为文件尾。然后 feof
才返回非零。
典型用法中,输入流处理在任何错误时停止;而 feof
和 ferror 用于区别不同错误条件。
示例
运行此代码
#include <stdio.h> #include <stdlib.h> int main(void) { FILE* fp = fopen("test.txt", "r"); if(!fp) { perror("File opening failed"); return EXIT_FAILURE; } int c; // 注意:int,非char,要求处理EOF while ((c = fgetc(fp)) != EOF) { // 标准C I/O读取文件循环 putchar(c); } if (ferror(fp)) puts("I/O error when reading"); else if (feof(fp)) puts("End of file reached successfully"); fclose(fp); }