您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言ferror()函数:检测文件流是否出错

时间:12-29来源:作者:点击数:

头文件:#include <stdio.h>

ferror()用来检测文件流是否发生了错误,其原型为:
    int  ferror(FILE *stream);

【参数】stream为文件指针。

【返回值】若文件流出错则返回非0,否则返回0。

ferror()一般是为增强代码强健性加入的检验性程序,避免在文件操作时出现程序锁死或错误。

ferror()函数常与clearerr()函数一起使用,如果ferror(fp)发现错误,返回一个非0值,那么调用clearerr(fp)后,ferror(fp)的值变为0。

【实例】以只读方式打开一个文件,读取文件内容,检测是否出错。

#include<iostream.h>
#include<stdio.h>
void main(void)
{
    FILE* stream;
    char s[81];
    stream = fopen("fscanf.txt","w");
    if(stream == NULL)/*流为空*/
    {
        printf("the file is opeaned error!\n");
    }
    else
    {
        fprintf(stream,"%s %ld %f %c","a_string",6500,3.1415,'x');
        fseek(stream,0L,SEEK_SET);
        fscanf(stream,"%s",s);
        printf("%ld\n",ftell(stream));
        if(ferror(stream))            /*判断是否读取出错*/ {
            printf("Error form reading file.\n");
        }
        if(ferror(stream))/*清楚错误信息*/
        {
            clearerr(stream);
            printf("Error has been cleared.\n");
        }
        if(ferror(stream))/*再次检查是否还有错误信息*/
        {
            printf("Error form reading file.\n");
        }
        fclose(stream);
    }
}

运行结果:

0
Error form reading file.
Error has been cleared.

程序以只写方式打开一个文件,写入一部分数据, 然后使用fscanf函数读取文件流中的数据,紧接着使用ferror函数检测出错,使用dearen()函数将错误清除。

注意:有网友问关于ferror()返回非0值的含义,但是C语言标准并未对此进行说明,或者笔者没有找到。如果您有更完善的资料,请留言说明,非常感谢。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门