C语言 文件操作7--文件错误处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("文件打开失败!\n"); 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("文件读取到了末尾\n"); //重置文件流状态,清除错误信号 clearerr(pf); //注:如果不重置文件流状态,那么下次读取该文件正确状态仍然会报这个错误 } //判断文件是否报错 if (ferror(pf))//ferror返回值为非0,意味着文件出错 { printf("文件读取出错!\n"); perror("文件错误2信息是"); //重置文件流状态,清除错误信号 clearerr(pf); } } else{ printf("%c\n",ch); } //关闭文件指针 fclose(pf); //注:为何将fclose()写在else里面,而不是外面? //因为如果文件打开失败,pf==NULL,空指针无法关闭,程序会报错 } system("pause"); }
以上是关于C语言 文件操作7--文件错误处理的主要内容,如果未能解决你的问题,请参考以下文章
android.view.inflateexception 二进制 xml 文件第 7 行错误膨胀类片段