⭐️ 往期相关文章
✨链接1:C语言文件打开关闭详解、文件顺序读写详解。
✨链接2:C语言文件随机读写详解(fseek、ftell、rewind)
✨链接3:C语言scanf/fscanf/sscnaf和printf/fprintf/sprintf的区别
✨链接4:C语言打开文件一次既可以读又可以写
⭐️ 文件结束的判定
💬 文本文件读取是否结束
fgetc
判断是否为EOF
。fgets
判断返回值是否为NULL
。
💬 二进制文件读取是否结束
fread
判断返回值是否小于实际要读的个数。
💬 feof / ferror
feof
函数原型:
int feof( FILE *stream );
FILE *stream
文件流int feof
文件正常结束返回非0
,否则为0
feof
函数的作用:当文件读取结束时,判断是读取失败结束,还是遇到文件末尾结束。
ferror
函数原型:
int ferror( FILE *stream );
FILE *stream
文件流int ferror
返回值为0
,表示未出错。如果返回一个非0
值,表示出错。
⭕️ 例:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fp = fopen("D:/test.txt" , "r");
if (!fp) {
perror("fopen:");
exit(-1);
}
int ch = 0;
while ((ch = fgetc(fp)) != EOF) {
;
}
// 判断什么原因结束的
if (ferror(fp)) {
puts("read failure\n");
}
else if (feof(fp)) {
puts("file ends normally\n");
}
fclose(fp);
fp = NULL;
return 0;
}