学科分类
目录
C语言

clearerr()函数

clearerr()函数的作用是清除错误标志和文件结束标志,该函数的声明如下所示:

void clearerr(FILE * stream);

上述函数声明中,参数stream表示一个文件指针。当输入或者输出到达文件末尾出现错误时,使用clearerr()函数清除错误指示状态。

接下来通过一个具体案例来学习一下clearerr()函数的使用,首先在项目根目录下新建文件clearerr.txt并输入itcast后保存,clearerr.txt文件内容如图1所示。

图1 clearerr.txt文件内容

接下来使用fputc()函数读取文件中的内容为例,演示clearerr ()函数的用法,如例1所示

例1 clearerrFile.c

 1    #define _CRT_SECURE_NO_WARNINGS
 2    #include <stdio.h>
 3    int main()
 4    {
 5        FILE* fp;
 6        fp = fopen("clearerr.txt", "r");
 7        if (fp == NULL) 
 8            perror("文件打开失败");
 9    
 10        fputc('A', fp);
 11        if (ferror(fp)) 
 12        {
 13            perror("写入错误");
 14            clearerr(fp);
 15        }
 16    
 17        fgetc(fp);
 18        if (ferror(fp)==0)
 19            printf("无读取错误");
 20        fclose(fp);
 21        return 0;
 22    }

例1运行结果如图2所示。

图2 例1运行结果

在例1中,第6行代码只读方式打开clearerr.txt文件,在写入文件时进行错误检测并提示写入错误,第14行代码使用clearerr()函数清除写入错误,第18行代码在读取文件后进行错误检查,ferror()函数返回值为0,提示无读取错误。由图2可知,通过clearerr()函数成功清除了写入错误,程序正常往后执行,输出了“无读取错误”信息。

若注释掉第14行代码,则第2次ferror()错误检查返回非0值,不会输出无读取错误。

点击此处
隐藏目录