前言
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");
}
网友评论