C语言 查看库函数执行失败原因

C语言 查看库函数执行失败原因,第1张

C语言 查看库函数执行失败原因

  • 一、 errno 是什么


  • 二、 strerror函数


  • 三、 perror函数


一、 errno 是什么

C语言提供了许多库函数方便我们使用。


当一个库函数执行失败时候,可以查看errno对应的错误信息了解库函数执行失败准确原因。



errno:错误代码,一个int类型变量,在errno.h中定义,每个错误代码对应一个错误信息字符串,任何库函数都可以将其值修改为不同于零的某个值,通常用于指示特定类别的错误信息

注意:只有当一个库函数执行失败时,才会设置errno。


当库函数成功执行时,errno的值不会被修改。


这意味我们不能通过测试errno的值判断是否有错误发生,而只有库函数执行失败时检查errno的值才有意义


二、 strerror函数

strerror函数功能:
打印错误代码对应的错误信息

库函数strerror函数声明
char * strerror ( int errnum );
返回值:返回错误信息字符串的起始地址
errnum :错误代码或errno

测试1:

#include 
#include 

int main()
{
	FILE* pf = fopen("file.txt", "r"); //打开文件,文件file.txt本身不存在,函数执行会错误返回NULL指针,并修改errno值
	if (NULL == pf)
	{
		printf("%s\n", strerror(errno)); //打印errno对应错误信息
		return -1;
	}
	printf("打开文件成功\n");
	fclose(pf); //关闭文件
	pf = NULL;
	return 0;
}

输出

No such file or directory

测试2:

#include 
#include 

int main()
{
	printf("%s\n", strerror(1)); //打印错误代码1对应错误信息
	printf("%s\n", strerror(2)); //打印错误代码2对应错误信息
	printf("%s\n", strerror(3)); //打印错误代码3对应错误信息
	return 0;
}

输出

Operation not permitted
No such file or directory
No such process

三、 perror函数

perror函数功能:
打印error对应的错误信息

库函数perror函数声明
void perror ( const char * str );
str : 当str不是NULL指针并且指向一个非空的字符串,perror函数先打印这个字符串,后面跟一个分号和一个空格,然后打印errno对应的错误信息

测试:

#include 
#include 

int main()
{
	FILE* pf = fopen("file.txt", "r"); //打开文件,文件file.txt本身不存在,函数执行会错误返回NULL指针,并修改errno值
	if (NULL == pf)
	{
		perror(NULL); //直接打印errno对应错误信息
		perror("fopen"); //首先打印fopen字符串,然后打印errno对应错误信息
		return -1;
	}
	printf("打开文件成功\n");
	fclose(pf); //关闭文件
	pf = NULL;
	return 0;
}

输出

No such file or directory
fopen: No such file or directory

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存