码迷,mamicode.com
首页 > 其他好文 > 详细

判断文件的错误与结束状态

时间:2015-05-08 23:26:37      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

一.标准文件编程库用于文件状态的函数:
#include <stdio.h>
1.int ferror(FILE* stream);//只是用来判断错误是否发生,不能明确错误的内容
当文件IO 发生错误时,ferror返回非0,成功返回0
2.int feof(FILE* stream);//只是用来判断错误是否发生,不能明确错误的内容
当文件结束时,feof返回非0,否则返回0
//使用上面俩函数:
//读取文件,当文件结束时自动退出
int main()
{
    FILE* fp;
    char buf[1024];
    //1.通常使用的判断出错方法
    if((fp = fopen("/etc/passwd","r")) == NULL)
    {
        fprintf(stderr,"Error: %s","open file passwd failed");
        perror("/etc/passwd");
        exit(1);
    }
    //2.使用ferror判断文件是否发生错误
    fp = fopen("/etc/passwd","r");
    if(ferror(fp))
    {
        fprintf(stderr,"Error: %s","open file passwd failed");
        perror("/etc/passwd");
        exit(1);
    }


    //1.通常判断文件结束的方法
    while(fgets(buf,sizeof(buf),fp) != NULL)
    {
        if(fputs(buf,stdout) == EOF)
        {
            fprintf(stderr,"Error:%s","fput filed");
            break;
        }
    }
   //2.使用feof判断文件结束
    while(!feof(fp))//没结束就不退出循环
    {
        fgets(buf,sizeof(buf),fp);
        if(feof(fp))
            break;
        fputs(buf,stdout);
    }

    fclose(fp);
}


3.void clearerr(FILE* stream);
clearerr清除文件流错误标志和EOF标志。

二.标准文件编程库中用于判断文件明确错误信息的函数
当unix函数出错时,常常返回一个负值或NULL,而且整型变量errno通常被设置为含有附加信息的一个值。
#include <string.h>
1.char* strerror(int errnum);
此函数将errnum(通常就是errno的值)映射为一个出错信息字符串,并且返回此字符串的指针。
在发生错误后,立刻调用strerror(errno),就可以获取当前的错误提示信息,然后可通过fprintf将其打印到标准错误输出流中
//用法:

if((fd = open("/etc/passwd","r")) == -1)
{
    fprintf(stderr,"Error:%s",strerror(errno));
}


#include <stdio.h>
2.void perror(const char* msg);

判断文件的错误与结束状态

标签:

原文地址:http://www.cnblogs.com/lichenlong/p/4489065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!