printf中%m输出errno字符串

返回只类型为void的linux函数一般不会出错

但当一个函数出错时,errno(一个int型变量,用errno时,程序必须包含errno.h头文件)会随之改变,不同的值代表了不同的错误

所以直接用这个变量表示错误非常的不方便,所以每次想知道出现了什么错误,必须回到errno.h中察看宏定义

所以有以下几种方式来获得详细的错误信息:

1. void perror(const char *s);

函数说明,函数的头文件是stdio.h

这个函数将上一个函数发生的错误输出到标准错误(stderr),参数s所指的参数先输出来(该参数与错误无关,可以自己任意添加),之后再输出错误原因(字符串),此原因依照errno的值来输出错误信息

2.char * strerror(int errnum);

函数说明:函数的头文件是string.h

参数一般为errno,可以把errno对应的数值转化成对应的错误信息(字符串)

3.printf(“%m",errno);

也可一直接用printf("%m\n");

这个用法也直接输出上一个函数的错误信息,第二个参数可以不要


这三个错误信息一块用的时候,请注意他们的顺序,要不有的函数可能因为上一个错误输出函数的影响,输出不了错误信息

 

注意:不能用errno判断刚才的操作是否出错,只能是当错误发生时,用errno来获取错误的信息

并不是所有的函数的错误信息都存储在errno中:

例如函数:struct hostent* gethostbyname(const char* name);它的错误信息保存在h_errno中

转载:http://www.cnblogs.com/sjz-sjz/archive/2012/09/11/2680846.html

posted @ 2014-08-19 16:04  3me  阅读(2554)  评论(0)    收藏  举报