前言
有时候我们写程序会出现一些错误,比如打开文件失败返回NULL,但是我们不知道是什么导致的,这时我们可以利用errno来辅助我们找到原因
使用方法
首先写一段打开文件的代码
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
int main(){
FILE * fp = fopen("test","r");
if(NULL == fp){
printf("错误:%d\n",errno);
}
return 0;
}
这里我们打开的test文件并不存在,因此执行此段代码必定会返回NULL
当我们打开文件失败的时候,系统会将错误信息存到errno变量中,我们可以通过查看errno来查找原因,如下:
这时我们可以通过查看错误码来找到错误原因,通过如下命令查看错误码对应的信息:
vim /usr/include/asm-generic/errno-base.h
但是这样查看的话太麻烦,因此我们可以借助strerrorAPI来查看,它可以将错误码转为错误信息返回,如下所示:
DESCRIPTION
The strerror() function returns a pointer to a string that describes
the error code passed in the argument errnum, possibly using the
LC_MESSAGES part of the current locale to select the appropriate lan‐
guage. (For example, if errnum is EINVAL, the returned description
will be "Invalid argument".) This string must not be modified by the
application, but may be modified by a subsequent call to strerror() or
strerror_l(). No other library function, including perror(3), will
modify this string.
然后我们调整代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
int main(){
FILE * fp = fopen("test","r");
if(NULL == fp){
printf("错误:%s\n",strerror(errno));
}
return 0;
}
这时我们运行程序发现输出的错误信息就是我们能看懂的了
网友评论