#include <stdio.h>
#include <errno.h>
#include <string.h>
extern int errno ;//定义变量(错误代码)
int main ()
{
FILE * pf;
int errnum;
pf = fopen ("unexist.txt", "rb");//尝试打开一个不存在的文件
if (pf == NULL)
{
errnum = errno;//将错位代码赋值给代码中的变量
fprintf(stderr, "错误号: %d\n", errno); //将错误代码以十进制形式输出到标准错误流
perror("通过 perror 输出错误");//打印程序员给的字符串+:,后面是错误代码的文本形式
fprintf(stderr, "打开文件错误: %s\n", strerror( errnum ));//传入错误代码的十进行制值给strerror()并打印出错误代码的文本形式
}
else
{
fclose (pf);//关闭文件流
}
return 0;
}
errorno到底在哪里定义,程序运行过程中它的值又存储到了哪里?
errno定义在源文件中;程序运行过程中它的值输出到标准错误输出流stderr中也就是输出到屏幕上;之后perror函数运行的时候会去errno.h中找到errno十进制错误编号对应的错误文本形式,再输出到屏幕上;而strerr()需要传入错误编号,它才会去errno.h的内容中查找对应的错误文本;
虽然errno.h我们很难查看,但道理是这样的;
VS IDE中,在不明白的符号strerror或errno上点鼠标右键,选转到定义。