目录
fgetc、fgets的返回值说明都有提到一句话 “调用失败或者文件读取结束时,函数返回EOF”。但是光凭EOF我们也无从知晓,是调用失败还是文件读取结束。
因此,C语言给我们提供了 feof、ferror 函数。这两个函数 一般可以配套使用,一个用来是否读取到文件尾,一个用来判断是否遇到错误(调用失败)。
- feof:当文件读取结束时,判断是不是遇到文件末尾才结束的
- ferror:当文件读取结束时,判断是不是遇到错误才读取结束的
1、feof、ferror 函数返回值
两个函数的参数都是 文件指针,这里需要注意的是两个函数的返回值。
(1) feof 函数
函数返回值:如果没有到文件尾,返回0;到达文件尾,返回一个非零值。
(2) ferror 函数
函数返回值:无错误出现时返回0;有错误出现时,返回一个非零值。
2、feof、ferror 函数函数使用
FILE* pf = fopen("D:\\data.txt", "r");
if (pf == NULL)
{
perror("fopen");
return -1;
}
fgetc(pf);
fgetc(pf);
fgetc(pf);
fgetc(pf);
if (ferror(pf))
{
printf("读取时出现了IO错误");
}
else if (feof(pf))
{
printf("成功到达文件尾");
}
fclose(pf);
pf = NULL;