在 C 语言 中,我们在使用 fgetc 函数读取 文件 时,如果读取到了文件的结尾,那么会返回 EOF,但是如果读取出错,同样返回 EOF。
因此,我们就需要判断 fgetc 返回的 EOF 到底是错误还是到了文件结尾,这时,C 语言为我们提供了 ferror 函数用来判断我们是否读取文件错误。
ferror() 函数 用来判断文件操作是否出错。
int ferror(FILE *fp);
参数 | 描述 |
---|---|
fp | 打开文件返回的文件指针。 |
出错时返回非零值,否则返回零值。
ferror 函数在 stdio.h 的头文件里面。
文件出错是非常少见的情况。
使用 ferror 函数判断读取文件是否错误
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
FILE *fp = NULL;
if ( (fp = fopen("c:\\1.txt", "rt")) == NULL )
{
puts("Open file failed\n");
return;
}
else
{
puts("Open file success\n");
}
char ch;
while ( (ch = fgetc(fp)) != EOF)
{
putchar(ch);
}
printf("\n");
if (ferror(fp))
{
puts("Open file failed\n");
}
else
{
puts("Open file success\n");
}
// todo
int ret = fclose(fp);
if (ret == 0)
{
puts("Close file success\n");
}
else
{
puts("Close file failed\n");
}
return 0;
}
程序运行后,控制台输出如下:
我们首先,使用了 fopen 函数,打开了一个 c 盘的文件,打开成功后,我们使用打开后返回的 FILE 指针,并调用 fgetc 函数,来进行读取文件。
读取成功后,我们使用 ferror 函数,判断文件是否读取成功,最后,我们可以看到,文件读取成功了。
在 C 语言中,我们使用 fgetc 函数读取文件结束时,判断 fgetc 返回的 EOF 到底是错误还是到了文件结尾,这时,C 语言为我们提供了 ferror 函数用来判断我们是否读取文件错误。