perror()函数,strerror()函数,系统提供的报错函数讲解

来源:互联网 发布:中国网络战部队 编辑:程序博客网 时间:2024/05/17 10:28
#include <stdio.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <assert.h>int main(){FILE *fp1,*fp2;fp1=fopen("test.txt1","r");            //成功则返回文件描述符,失败就返回NULL,if(fp1== NULL){ printf("exam1\n");    printf("%d\n",errno);              perror("open failed");                printf("open failed: %s\n",strerror(errno)); return 0;                            //此处如果没有return 0;将出现段错误}fclose(fp2);fp2=fopen("student.txt","r");//给一个没有关闭的文件指针赋值,会出现段错误; fclose(fp); if(fp2 == NULL) { printf("exam2\n"); printf("%d\n",errno);              // 打印错误信息代表的代码,错误信息会被直接放入此整形变量之中//void perror(char *string); perror("open failed");              //将输入的信息和errno对应的错误信息拼接在一起; //将错误信息拼接到此字符串后面 printf("open failed: %s",strerror(errno));  return 0; }return 0;}//规则:如果一个文件没有被打开,文件描述符里面装的是NULL,如果去关闭疑问件描述符是NULL的文件,那么将会出现段错误;//给一个没有关闭的文件指针赋值,会出现段错误;


上面程序阐述了一些报错函数的作用:

在此之前先介绍一个变量int    errno:     errno包含在头文件#include <errno.h> 之中

这个变量会记录最近一次,函数执行错误的信息,当调用一些函数时,由于某些错误将会出现错误,

这些错误将以数字的形式记录下来,然后一些函数便可以通过errno找到错误字符串的具体形式。

1.perror("字符串")                                   函数原型    void perror(char  *string);

perror(" i love you") ;                          //输出:      i love you: 错误信息 

函数功能:   打印一次最近的系统错误信息,当一些函数执行错误将产生错误信息,此函数会将错误的信息以字符串的形式和传入函数内的字符串拼接起来后显示出来。

2. strerror(errno);                                     函数原型    char * strerror(int   errnum);

 函数功能:依照参数errno查找其错误原因的描述字符串,并且以字符串指针的形式返回出来;

#include <stdio.h>#include <string.h>int main(int argc,char *argv[]){int i;for(i=0;i<30;i++){printf("%d:%s\n",i,strerror(i));}return 0;}

上面代码可以打印出错误信息的前30个

如果想查询其他的,可以到 /usr/include/asm或者 /usr/include/asm+其他(Tab键补全即可)


















原创粉丝点击