1、EOF 的定义
EOF
是一个常量,通常在 头文件中定义。它的值通常是 -1
,表示文件流的结束。
#define EOF (-1)
C 中,EOF
通常定义为 -1
,但它的实际值可以在不同平台上有所不同。-1
用于表示读取到文件末尾或遇到错误。
2、使用 EOF 的场景
1)读取字符
当读取文件中的字符时,fgetc()
函数会返回一个字符的整数值。如果它到达文件的末尾,就返回 EOF
。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
int ch;
while ((ch = fgetc(file)) != EOF) {
putchar(ch); // 打印每个字符
}
fclose(file);
return 0;
}
2)读取字符串
当使用 fgets()
读取字符串时,EOF
同样用于指示文件结束。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
char buffer[100];
while (fgets(buffer, sizeof(buffer), file)) {
printf("%s", buffer); // 打印每行内容
}
fclose(file);
return 0;
}
3、检查 EOF 的使用
在使用文件读取函数时,EOF
不仅表示文件结束,还可能表示读取错误。因此,检测文件结束时最好通过 feof()
函数来判断是否是文件结束,或者是发生了其他错误。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
int ch;
while ((ch = fgetc(file)) != EOF) {
putchar(ch); // 打印每个字符
}
if (feof(file)) {
printf("\nEnd of file reached.\n");
} else {
printf("\nError occurred.\n");
}
fclose(file);
return 0;
}