实现这个功能比较简单,主要是要搞清strerror函数和perror函数。
关于errno
为什么要来介绍errno呢?
因为它记录了调用库函数或系统调用后的错误信息。
什么是errno?
errno记录了系统的最后一次错误代码。errno是一个int型的系统全局变量,其错误代码定义在errno.h中。每一个errno变量对应着
以字符串表示的错误类型。
介绍完errno后,我们来介绍上面提到的两个函数。
strerror函数
通过标准错误的标号,获得错误的描述字符串 ,将单纯的错误标号转为字符串描述,方便用户查找错误。
char * strerror(int errnum);
简单的说:就是errno转为错误字符串。
注意
使用该函数需要导入
#include <errno.h>
#include <string.h>
perror函数
void perror(const char *s);
将上一个函数的出错信息输出到标准设备。
参数s所指的字符串先打印,后面跟上错误原因字符串。
讲完之后,只需要获取errno,传入strerror函数,进行拼接,即可编写自己的perror函数。
实现代码如下:
//用strerror函数实现perror函数的功能
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
void myperror(char * str){
extern int errno;
char *error=strerror(errno);
printf("%s: %s\n",str,error);
}
int main(){
FILE *fp;
fp=fopen("~/aaa.txt","r+");
if(NULL==fp){
myperror("openerror");
}
return 0;
}