• C语言 文件操作7--文件错误处理


    //文件错误处理
    
    
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<io.h>
    
    //perror(s)函数: 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串
    //feof()函数:检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()清除。
    //ferror()函数:获取文件流状态,如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。
    //clearerr()函数:使文件错误标志和文件结束标志置为0。
    
    void main(){
        //错误一:以写方式打开只读文件
        //定义文件路径
        char path[40] = "E:\Look\a.txt";
        //定义文件指针
        FILE *pf = fopen(path, "w");
        if (pf==NULL)
        {
            printf("文件打开失败!
    ");
            perror("文件错误信息是");//perror()函数会输出参数s+“:”+具体文件错误信息
            //错误一;打印权限不够
        }
        else{
            fputs("今年在有没有齐天大圣了!!!",pf);
            //错误二:在w模式下,执行文件读操作
            //进行错误操作,开始读文件
            //将指针移动到文件开头
            rewind(pf);
            char ch = fgetc(pf);
            //fgetc()函数读取失败返回-1,读取到文件末尾返回-1;在fgetc()函数里的-1和EOF(end of file)等价
            if (ch==EOF)
            {
                //判断文件是否到了末尾
                if (feof(pf))//feof返回值为非0,表示到了文件末尾
                {
                    printf("文件读取到了末尾
    ");
                    //重置文件流状态,清除错误信号
                    clearerr(pf);
                    //注:如果不重置文件流状态,那么下次读取该文件正确状态仍然会报这个错误
                }
                //判断文件是否报错
                if (ferror(pf))//ferror返回值为非0,意味着文件出错
                {
                    printf("文件读取出错!
    ");
                    perror("文件错误2信息是");
                    //重置文件流状态,清除错误信号
                    clearerr(pf);
                }
    
            }
            else{
                printf("%c
    ",ch);
            }
            //关闭文件指针
            fclose(pf);
            //注:为何将fclose()写在else里面,而不是外面?
            //因为如果文件打开失败,pf==NULL,空指针无法关闭,程序会报错
        }
        system("pause");
    }

  • 相关阅读:
    Spring学习8- SSH需要的jar包
    Spring学习8-SSH+Log4j黄金整合
    Spring学习8-Spring事务管理(注解式声明事务管理)
    dbvisualizer客户端执行创建存储过程或自定义函数语句的方法
    jvm的组成入门
    java的反射机制
    oracle排序子句的特殊写法与ORA-01785错误
    javascript的数据类型检测
    jsp的el表达式
    javascript模块化编程的cmd规范(sea.js)
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5163985.html
Copyright © 2020-2023  润新知