标签:
一.标准文件编程库用于文件状态的函数:
#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