美文网首页unix
C语言_程序出现错误获取错误信息

C语言_程序出现错误获取错误信息

作者: 卢融霜 | 来源:发表于2019-10-28 18:17 被阅读0次

    前言

    C语言中通过返回值来表示错误形式,一般规则如下:
    如果函数的返回值类型是int类型,并且函数的返回值不可能是负数时,则返回0表示正常结束,返回-1表示出错
    如果函数的返回值类型是int类型,函数的返回值可能是负数时,使用指针作为函数的形参将函数的结果带出去,然后使用0表示正常结束,使用-1表示出错
    如果函数的返回值类型是指针类型,则返回NULL表示失败,其他值表示正常结束
    如果不考虑函数是否出错的情况,则返回类型使用void

    全局变量errno

    系统预定义了一个整型的全局变量errno。在库函数和系统调用出错的时候,就会设置errno的值,然后可以根据errno的值找到描述错误的字符串。
    头文件errno.h中包含对errno全局变量的外部声明和各种错误号的宏定义、错误的描述信息。

    #include <errno.h> 
    #include<stdio.h>
    extern int errno;
    int main(){
    //意思一下,errno的值不一定变化 (请忽略部分语法错误)
     printf("%d\n",0/3);
     printf("%d",errno);
    }
    

    注意

    errno可以用于获取错误的原因,但是不能用于判断函数调用是否成功的依据,因为errno是一个全局变量,一旦程序中出现错误,则会修改errno的值,那么后续的代码中无论是否出错,errno都会有一个值。

    错误信息

    根据错误的编号获取错误的描述信息
    功能:返回错误编号对应的描述错误的字符串
    参数:errnum:错误的编号
    返回值:找不到错误的编号,返回 “Unknown error nnn”字符串的首地址
    找到错误的编号,返回描述错误的字符串的首地址

    char *strerror(int errnum);
    
    #include<stdio.h>
    #include <string.h>
    #include <errno.h> 
    extern int errno;
    int main(){
    //意思一下(请忽略部分语法错误)
     printf("%d\n",0/3);
     printf("%s\n",strerror(errno));
    }
    

    标准错误输出

    void perror (const char* s);
    

    通过标准错误输出显示最近一次函数调用的错误信息
    功能:输出最近一次函数调用的错误信息
    参数:s 用户自定义的字符串
    返回值:该函数不返回
    注意:先输出参数s的内容,然后输出':'和一个空格、描述错误的信息,最后是一个换行符

    #include<stdio.h>
    int main(){
    //意思一下(请忽略部分语法错误)
     printf("%d\n",0/3);
     printf("%s\n",perror("错误标题"));
    }
    

    %m

    printf(“%m”);
    

    通过printf函数输出最近的一次错误信息

    注意:在windows下测试,%m没有效果。

    #include<stdio.h>
    int main(){
    //意思一下(请忽略部分语法错误)
     printf("%d\n",0/3);
     printf("错误标题: %m\n");
    }
    

    相关文章

      网友评论

        本文标题:C语言_程序出现错误获取错误信息

        本文链接:https://www.haomeiwen.com/subject/dkabvctx.html