文章目录
一、引言
在C语言中,不支持对错误的直接处理,但是可以使用相应的函数来判断错误,并将错误输出
1.1 相关函数,头文件
- errno.h:错误处理的头文件
- errno:错误代码,是个全局变量,在头文件中已定义
- perror():字符串输出,后面自动加上错误代码对应的文本
- strerror():返回一个指针,指针指向errno值的文本形式
- 代码实现:
#include <stdio.h> #include <errno.h> #include <string.h> #include <stdlib.h> //exit()函数对应的头文件 extern int errno; int main() { errno = 0; FILE *p; int errnum; p = fopen("unexist.txt", "rb"); if (p == NULL) { /* 函数解释: errno perror() strerror() */ errnum = errno; // stderr:文件流,用于存放输出信息 fprintf(stderr, "错误号:%d\n", errno); // perror:用于输出自己传给它的字符串 // 以及跟错误号对应的文本 perror("通过perror输出错误"); // strerror:返回一个指针,指针指向当前errno值的文本形式 // 你也可以传给它一个整数值,输出不同的信息 fprintf(stderr, "打开文件错误:%s\n", strerror(errnum)); } else { fclose(p); } /* 被零除的错误 */ int i = 20; int j = 0; int k; if (j == 0) { fprintf(stderr, "除数为0!!!\n"); // exit(0):程序正常退出,也可以使用宏:EXIT_SUCCESS // exit(非零):程序异常退出,也可以使用宏:EXIT_FAILURE exit(-1); } k = i / j; printf("结果:%d", k); return 0; }
- 运行结果:
错误号:2 通过perror输出错误: No such file or directory 打开文件错误:No such file or directory 除数为0!!!