unix

C语言_程序出现错误获取错误信息

2019-10-28  本文已影响0人  卢融霜

前言

C语言中通过返回值来表示错误形式,一般规则如下:
如果函数的返回值类型是int类型,并且函数的返回值不可能是负数时,则返回0表示正常结束,返回-1表示出错
如果函数的返回值类型是int类型,函数的返回值可能是负数时,使用指针作为函数的形参将函数的结果带出去,然后使用0表示正常结束,使用-1表示出错
如果函数的返回值类型是指针类型,则返回NULL表示失败,其他值表示正常结束
如果不考虑函数是否出错的情况,则返回类型使用void

全局变量errno

系统预定义了一个整型的全局变量errno。在库函数和系统调用出错的时候,就会设置errno的值,然后可以根据errno的值找到描述错误的字符串。
头文件errno.h中包含对errno全局变量的外部声明和各种错误号的宏定义、错误的描述信息。

#include <errno.h> 
#include<stdio.h>
extern int errno;
int main(){
//意思一下,errno的值不一定变化 (请忽略部分语法错误)
 printf("%d\n",0/3);
 printf("%d",errno);
}

注意

errno可以用于获取错误的原因,但是不能用于判断函数调用是否成功的依据,因为errno是一个全局变量,一旦程序中出现错误,则会修改errno的值,那么后续的代码中无论是否出错,errno都会有一个值。

错误信息

根据错误的编号获取错误的描述信息
功能:返回错误编号对应的描述错误的字符串
参数:errnum:错误的编号
返回值:找不到错误的编号,返回 “Unknown error nnn”字符串的首地址
找到错误的编号,返回描述错误的字符串的首地址

char *strerror(int errnum);
#include<stdio.h>
#include <string.h>
#include <errno.h> 
extern int errno;
int main(){
//意思一下(请忽略部分语法错误)
 printf("%d\n",0/3);
 printf("%s\n",strerror(errno));
}

标准错误输出

void perror (const char* s);

通过标准错误输出显示最近一次函数调用的错误信息
功能:输出最近一次函数调用的错误信息
参数:s 用户自定义的字符串
返回值:该函数不返回
注意:先输出参数s的内容,然后输出':'和一个空格、描述错误的信息,最后是一个换行符

#include<stdio.h>
int main(){
//意思一下(请忽略部分语法错误)
 printf("%d\n",0/3);
 printf("%s\n",perror("错误标题"));
}

%m

printf(“%m”);

通过printf函数输出最近的一次错误信息

注意:在windows下测试,%m没有效果。

#include<stdio.h>
int main(){
//意思一下(请忽略部分语法错误)
 printf("%d\n",0/3);
 printf("错误标题: %m\n");
}
上一篇下一篇

猜你喜欢

热点阅读