程序中的错误处理
系统维护这一个全局变量 int errno , 当系统调用或者库函数出现错误时,errno 会记录这错误的值。 > 0 的值,每一个错误码会对应一个错误的描述信息。
#include <errno.h>
可以获取错误码
STRERROR(3)
#include <string.h>
char *strerror(int errnum);
功能
根据错误编号,返回错误编号的字符串
参数:
错误的编号 errno
返回值
返回一个描述错误的字符串
#include <errno.h>
#include <stdio.h>
#include <string.h>
int main (int argc, char * argv[])
{
FILE * fp = fopen(argv[1],"r");
if (NULL == fp){
printf("fopen error %d\n",errno);
printf(" %s\n",strerror(errno));
return -1;
}
fclose(fp);
return 0;
}
./a.out he
fopen error 2
No such file or directory
void perror(const char *s);
功能 输出一条系统错误的消息
参数 用户自定义个字符串
返回值标准输入: 默认的是 键盘的输入 FILE * stdin
标准输出:默认的是显示器 FILE* stdout
标准错误输出 默认的是显示器 FILE* stderr
#include <errno.h>
#include <stdio.h>
#include <string.h>
int main (int argc, char * argv[])
{
FILE * fp = fopen(argv[1],"r");
if (NULL == fp){
perror("fopen");
return -1;
}
fclose(fp);
return 0;
}
./a.out hello
fopen: No such file or directory
自己定义stdio.h
可以减少代码量
#ifndef T_STDIO_H
#define T_STDIO_H
#include <stdio.h>
#define E_MSG(str,v) do {perror(str);\
return(v);}while(0)
#endif