C语言 "errno.h" 错误编号

文章目录


errno.h

errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,表明在错误事件中的某些库函数发生了错误。它可以被一个程序读取和修改。 在程序启动时,errno 设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。

extern int * __error(void); //返回值为int* 的指针函数;
#define errno (*__error())  //*__error() 是int值。

errno.h头文件定义了一系列表示不同错误代码的宏,这些宏应扩展为类型为 int 的整数。
如,

EDOM; //这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM
ERANGE; //这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。
...//还有很多的宏,它们后面都有相应的注释,表示一个什么样的错误

使用

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void test()
{
	FILE *file = fopen("aaaa.c", "r");
	if (file == NULL) {
	    printf("打开文件发生了错误,错误说明是:%s\n", strerror(errno));
	}
	//重置为零
    errno = 0;
}

fopen()打开一个不存在的文件,返回NULL指针。
系统发生了错误,会自动修改 errno 的值。
通过 strerror(errno) 获取 错误号对应的 字符串描述。

程序输出:打开文件发生了错误,错误说明是:No such file or directory

当使用一些标准库函数发生了错误,如返回 NULL指针时;系统很有可能会修改errno。这时就可以去获取errno,或输出相应的错误字符串。

发布了400 篇原创文章 · 获赞 364 · 访问量 162万+

猜你喜欢

转载自blog.csdn.net/jjwwmlp456/article/details/104494081