错误报告函数:strerror和perror

本文主要介绍两种错误错误报告函数:strerror和perror。
strerror主要用于字符串错误报告,perror则是以一种简单,统一的方式报告错误,perror适用范围更广,更简单。
strerror函数原型如下:
char *strerror(int errnum)
作用:把其中一个错误代码作为strerror作为参数,并返回一个用于描述错误的字符串的指针,简言之就是将错误码转换成错误提示(错误码变成字符串提示)。
用法如下:

#include <stdio.h>
#include <errno.h>
#include <string.h>


int main()
{

    FILE *pfile;
    pfile = fopen("unexist.ent", "rb");
    if (pfile == NULL)
    {
        //perror("pfile");

        printf("%d:%s\n", errno, strerror(errno));
    }
    else
        fclose(pfile);
    system("pause");
    return  0;
}

这里写图片描述

perror函数原型如下:
void perror(const char *str)
例如打开一个不存在的文件,读取内容,操作系统的做法就是当发现错误时,报告错误。库函数提供了一个全局变量errno(在

#include <stdio.h>
#include <errno.h>


int main()
{

    FILE *pfile;
    pfile = fopen("unexist.ent", "rb");
    if (pfile == NULL)
    {
        perror("pfile");

    //printf("%d:%s\n", errno, strerror(errno));
    }
    else
    fclose(pfile);
    system("pause");
    return  0;



}

这里写图片描述

如果perror函数的参数不为NULL,并且str所指向的内容不为空,则perror先打印这个字符串,然后跟着输出一个分号和一个空格,接着输出错误信息的提示。
注意:errno 只有在调用函数出问题时才会被设置值,而函数调用成功后也不会修改他的值,所以不能用errno来判断一个函数是否调用成功,例如下列做法则会报错。

void fun(void)
{
    return 0;

}
int main()
{
    fun();
    if (errno ==0);
    printf("helloworld\n");
    return 0;

}

以前我们用strerror将所有错误码全部打印出来,其实我们也可以用perrno将所有错误码打印出来。

#include <stdio.h>
#include <errno.h>


int main()
{
    int i = 0;
    for (i = 0; i < 120; i++)
    {
        errno = i;
        perror("");

    }
    system("pause");
    return 0;
}

这里写图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值