C语言获取函数调用错误信息方法

一、初识

C语言中,有一个全局变量errno,存放了部分库函数调用过程中产生的错误码。
库函数的调用一般并不直接返回错误码,而是将错误码(是一个整数值,不同的值代表不同的含义)存入一个名为 errno 的全局变量中,errno 不同数值所代表的错误消息定义在 <errno.h> 文件中
如果库函数调用失败,可以通过读出 errno 的值来确定问题所在,推测程序出错的原因。
特别注意:

 1. 只有部分库函数才会设置全局变量errno的值。
 2. 当系统调用函数调用成功运行时,errno 的值不会被修改,当然也不会主动被置为 0。
 	也就是说如果上一次调用有错误代码写入errno,那么下一次调用成功这个errno还会是之前的错误值。
 	这也意味着errno不能作为调用库函数失败的标志

二、获取errno中错误码对应的消息描述方式

strerror和perror两个库函数,可以很方便地查看出错的详细信息。
1. perror
perror 在 <stdio.h> 中声明,用于在屏幕上最近一次系统错误码消息描述,在实际开发中,我们写的程序运行于后台。

2. strerror
strerror 在 <string.h> 中声明,用于获取错误码对应的消息描述。

函数声明:
char *strerror(int errno);

函数说明:strerror()用来依参数errno 的错误代码来查询其错误原因的描述字符串,然后将该字符串指针返回。

返回值:返回描述错误原因的字符串地址。

在gcc4.4.7版本中,定义了131个错误代码,我们用程序把它们全部显示出来(下面是示例程序):
#include <stdio.h>
#include <string.h>
 
int main()
{
  int errorno;
 
  for(errorno=0;errorno<132;errorno++)
  {
    printf("%d:%s\n",errorno,strerror(errorno));
  }
}
下面附上输出结果:

在这里插入图片描述

示例

#include <errno.h>
#include <stdio.h>

void main()
{
	FILE * fp=fopen("aaaa","r");
    if(fp==0)
    {   
        printf("%d %s\n",errno,strerror(errno));//strerror示例
        perror("perror res:");//perror示例
        printf("fopen failed!\n");//可以认为打出出问题的地方
        return ;
    }
    fclose(fp);
}

补充知识

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值