宏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()函数相关推荐

  1. C 语言中 char[] 的操作函数

    C语言中char[]的操作函数 1.赋值操作 在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women"; char ...

  2. c语言printf函数的作用,c语言中printf用法及其函数定义

    c语言中printf用法及其函数定义 发布时间:2020-04-09 10:51:14 来源:亿速云 阅读:354 作者:小新 今天小编给大家分享的是c语言中printf用法及其函数定义,很多人都不太 ...

  3. c语言中val是什么函数,val(val是什么意思)

    有这么一个C语言程序 : int i; long val; for(i=0;i 在C语言中Val是一个将由数字符号(包括正负号.小数点)组成的字符型数据转换成相应的数值型数据的函数,语法格式是Val( ...

  4. c语言中fmod()函数和log10()函数用法

    C语言中fmod函数的功能是x/y的求余运算,适用于double ,float,long double,如果y=0的话,那么返回 值得一提的是%,'%'同样是取余,但是% 适用于整数取余,%是整数的取 ...

  5. c语言getchar函数的作用,c语言中getchar的用法函数用法

    当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...

  6. C语言中fscanf和fprintf函数的使用

    目录 一.前言 二.对比 1.scanf和fscanf: 2.printf和fprintf: 三.结论: 四.代码实现 1.fprintf相关代码 2.fscanf代码实现 3. 用fscanf和fp ...

  7. c语言中gets函数可以输入空格吗_C语言中printf和gets函数的实用技巧

    Printf函数输出的格式与方法: 想要一起学习交流,或者系统学习c++的可以加553014383,邀请码:悟空,裙内有众多资源及解答老师. 1.输出数字的时候存在宽度和精度,那对于数字而言,输出数字 ...

  8. C语言中fgets()函数

    从文件结构体指针stream中读取数据,每次读取一行.读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsi ...

  9. c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc

    C语言编程常见问题解答之常用函数的包括文件 C语言编程常见问题解答之常用函数的包含文件(1) 作者:unknown 更新时间: 2005-05-10 函数 包含 类别 功能 _atold math.h ...

最新文章

  1. oracle12测试骤,Oracle中SQL语句解析的步骤
  2. Linux重启命令reboot
  3. Rus入门到放弃——字符串与字符切片
  4. 【渝粤教育】电大中专学前儿童健康教育 (4)作业 题库
  5. Java I/O学习——File
  6. 第 5 章 File Share
  7. 无法检测的新型 Linux 恶意软件利用 Dogecoin API 攻击 Docker 服务器
  8. C++day13 学习笔记
  9. json 插入数据_让繁琐的工作自动化——python处理JSON文件
  10. 如何识别计算机病毒,怎样识别计算机病毒
  11. 车机开发之均衡器app开发
  12. 内外兼修的移动办公伴侣:联想YOGA S730评测体验
  13. ABBYY教程—PDF识别模式如何使用?
  14. 微信JSSDK 音频下载speex转码问题
  15. 关于小米笔记本Pro内部风扇异响问题解决方法
  16. unity学习路上....
  17. 猿创征文 |【算法入门必刷】数据结构-栈(三)
  18. 【JSTL】JSP 标准标签库JSTL学习
  19. UHS-II文档学习
  20. (附源码)ssm南工二手书交易平台 毕业设计172334

热门文章

  1. 2818 天使的起誓
  2. UML图是什么,能干什么
  3. 陪你读书之《R语言实战》
  4. 什么是“一书一签”?
  5. docker的4种网络模型
  6. 累积分布图/累积分布函数/分布函数/概率分布函数
  7. OCR文字识别项目(原理)
  8. scrapy--使用items.py 文件处理数据
  9. 量子计算机时空穿越,美俄顶尖专家发现:量子世界时间可以停止,未来穿越时空能做到?...
  10. ScrollView 滚动视图控件