C语言中错误显示函数
有两个比较常用的函数,分别是strerror和perror。
strerror
头文件是string.h,原型为:
char *strerror(int errnum);
接受一个表示错误代码的整型值,返回错误代码对应的信息字符串;
perror
头文件是stdio.h,原型为:
void perror(const char *s);
该函数是把errno的错误映射为字符串,然后在前面拼接字符串s和一个冒号(应该是空格+冒号),最后在标准输出上显示。
测试代码:
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char** argv) { int fd; fd=open("file_not_exist", O_RDWR); printf("ererno=%d\n",errno); printf("strerror:%s\n",strerror(errno)); perror("perror"); exit(EXIT_SUCCESS); }
执行的结果如下:
可以看到strerror的结果必须使用printf等才能在标准输出上显示,而perror直接显示,各有各的适用场景,perror相对来说简单高效一些,一个函数就能够把错误显示在标准输出上,而strerror则相对灵活一些,有些时候我们还可能要把错误信息提供到别的地方,例如显示在其他界面,或者写入日志、数据库等,这个时候就像处理字符串一样方便。