1.ferror
- 函数原型: int ferror(FILE *fp)
- 功能:测试文件是否出现错误
- 返回值:未出错是0;出错为非0。
- 每次调用文件输入输出函数,均产生一个新的ferror函数值
- fopen打开文件时,ferror函数处置自动置为0
- 对同一个文件(文件指针或文件描述符)每一次调用输入输出函数,均产生一个新的ferror函数值,因此,应当在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。因此,应当在调用一个输入输出函数后立即检 查ferror函数的值,否则信息会丢失。
- 在执行fopen函数时,ferror函数的初始值自动置为0。
eg:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //ferror检测程序异常或者正常 //没读写一次,产生一个ferror //0代表正常,1异常 void main2() { FILE *pf = fopen("C:\\51job.txt", "r"); if (pf==NULL) { printf("\nopen fail"); } else { printf("\nopen sucess"); } if (ferror(pf)==0)//文件打开失败的情况,不让你继续,提示异常 { printf("\n正常"); } else { printf("\n异常"); } fputs("1234", pf); if (ferror(pf) == 0)//文件打开失败的情况,不让你继续,提示异常 { printf("\n正常"); } else { printf("\n异常"); } system("pause"); }
2.clearerr()
定义函数:void clearerr(FILE * stream);
函数说明:clearerr()清除参数stream 指定的文件流所使用的错误旗标.
3.perror()
- 原函数:
void perror(const char *s);
- 功能:
- perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) 。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量error 的值来决定要输出的字符串。 在库函数中有个error变量,每个error值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经 重新设置了error的值。perror函数只是将你输入的一些信息和现在的error所对应的错误一起输出。
- eg:
#include <stdio.h>
int main(void)
{
FILE *fp ;
fp = fopen( "/root/noexitfile", "r+" );
if ( NULL == fp )
{
perror("/root/noexitfile");
}
return 0;
}
运行结果:
[root@localhost io]# gcc perror.c
[root@localhost io]# ./a.out
/root/noexitfile: No such file or directory