C语言中errno与perror()函数
宏errno和perror()函数都是在stdlib.h中定义的。
1 stdlib.h头文件
stdlib.h头文件即standard library标准库函数头文件,包含了C、C++语言的最常用的系统函数,该文件中还包含了C语言标准库函数的定义。
2 errno宏
errno宏在stdlib.h中的定义为
#define errno (*_errno())
errno宏用于保存程序在运行中的错误代码(error code),以及用于显示错误信息的字符串。当程序运行时,errno宏被设置为0,一旦程序发生了系统级的错误,errno宏就会被设置为其它值。
3 strerror()函数
在“2 errno宏”中提到的errno宏获取到的错误信息是错误的索引号,可以通过strerror()函数获取该错误索引号对应的错误信息。strerror()函数在string.h头文件中定义,其格式为
char *strerror( int errnum );
其中,参数errnum是errno宏获取的错误索引号,该函数的返回值是错误信息。
4 perror()函数
perror()函数显示标准错误输出流stderr中的错误信息,该函数的格式为:
void perror( const char *message );
其中参数message为要显示的信息,该信息不包括保存在stderr中的错误信息。关于stderr,请参考《C++中fprintf()函数与stdout、stderr》
4 相关代码
以下代码通过两种方法实现了打印错误信息,一种是通过perror()函数,另一种是通过strerror()函数和errno。
#include <stdio.h>#include <string.h>int main(){FILE *stream;if ((stream=fopen("crt_fopen.c", "r")) == NULL){perror("perror says open failed");printf("strerror says open failed: %s\n", strerror(errno));}else{printf("open succeeded on input file\n");fclose(stream);}return 0;}
在以上代码中,通过fopen()函数打开指定的文件,如果打开该文件失败,则fopen()函数的返回值是NULL,此时可以通过perror()函数或者strerror()函数显示错误信息。输出错误信息如图1所示。
图1 错误信息
从以上错误信息可以看出,fopen()函数打开指定文件失败的主要原因是该文件不存在。
C语言中errno与perror()函数相关推荐
- C 语言中 char[] 的操作函数
C语言中char[]的操作函数 1.赋值操作 在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women"; char ...
- c语言printf函数的作用,c语言中printf用法及其函数定义
c语言中printf用法及其函数定义 发布时间:2020-04-09 10:51:14 来源:亿速云 阅读:354 作者:小新 今天小编给大家分享的是c语言中printf用法及其函数定义,很多人都不太 ...
- c语言中val是什么函数,val(val是什么意思)
有这么一个C语言程序 : int i; long val; for(i=0;i 在C语言中Val是一个将由数字符号(包括正负号.小数点)组成的字符型数据转换成相应的数值型数据的函数,语法格式是Val( ...
- c语言中fmod()函数和log10()函数用法
C语言中fmod函数的功能是x/y的求余运算,适用于double ,float,long double,如果y=0的话,那么返回 值得一提的是%,'%'同样是取余,但是% 适用于整数取余,%是整数的取 ...
- c语言getchar函数的作用,c语言中getchar的用法函数用法
当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...
- C语言中fscanf和fprintf函数的使用
目录 一.前言 二.对比 1.scanf和fscanf: 2.printf和fprintf: 三.结论: 四.代码实现 1.fprintf相关代码 2.fscanf代码实现 3. 用fscanf和fp ...
- c语言中gets函数可以输入空格吗_C语言中printf和gets函数的实用技巧
Printf函数输出的格式与方法: 想要一起学习交流,或者系统学习c++的可以加553014383,邀请码:悟空,裙内有众多资源及解答老师. 1.输出数字的时候存在宽度和精度,那对于数字而言,输出数字 ...
- C语言中fgets()函数
从文件结构体指针stream中读取数据,每次读取一行.读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsi ...
- c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc
C语言编程常见问题解答之常用函数的包括文件 C语言编程常见问题解答之常用函数的包含文件(1) 作者:unknown 更新时间: 2005-05-10 函数 包含 类别 功能 _atold math.h ...
最新文章
- oracle12测试骤,Oracle中SQL语句解析的步骤
- Linux重启命令reboot
- Rus入门到放弃——字符串与字符切片
- 【渝粤教育】电大中专学前儿童健康教育 (4)作业 题库
- Java I/O学习——File
- 第 5 章 File Share
- 无法检测的新型 Linux 恶意软件利用 Dogecoin API 攻击 Docker 服务器
- C++day13 学习笔记
- json 插入数据_让繁琐的工作自动化——python处理JSON文件
- 如何识别计算机病毒,怎样识别计算机病毒
- 车机开发之均衡器app开发
- 内外兼修的移动办公伴侣:联想YOGA S730评测体验
- ABBYY教程—PDF识别模式如何使用?
- 微信JSSDK 音频下载speex转码问题
- 关于小米笔记本Pro内部风扇异响问题解决方法
- unity学习路上....
- 猿创征文 |【算法入门必刷】数据结构-栈(三)
- 【JSTL】JSP 标准标签库JSTL学习
- UHS-II文档学习
- (附源码)ssm南工二手书交易平台 毕业设计172334