perror和errno的理解

1、前言

stdin:标准输入       //键盘输入的内容会存在这个文件里

stdout:标准输出     //屏幕输出的内容会存在这个文件里

stderr:标准错误      //屏幕输出的错误信息会存在这个文件里,与正常输出到stdout的信息分开

2、perror

#include <stdlib.h>

void perror(const char*s);

将上一个函数发生的错误原因输出到标准错误中stderr;s为用户的提示信息,会先被打印出来,后面会紧跟着错误原因字符串,此错误原因依照全局变量errno的值来决定要输出的字符串。

在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和errno所对应的错误一起输出。

#include <stdlib.h>
int main(int argc, char *argv[])
{
    FILE *fp;
    fp=fopen("/root/myfile","r+");
    if(NULL==fp)
    {
        perror("/root/myfile");
    }
    return 0;
}

 

会发现: void perror(const char*s);s是用户要输出的提示信息,perror会在后面添加   :错误原因

上一个函数即:fopen

3、errno

#include <errno.h>

errno是一个全局变量,不同的数值表示不同的出错原因;当linux系统调用api失败时,根据errno分析原因。

#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    FILE *fp;
    fp=fopen("/root/myfile","r+");
    if(NULL==fp)
    {
        perror("/root/myfile");

        printf("errno=%d\n",errno);
        char * mesg = strerror(errno);
        printf("/root/myfile:%s\n",mesg);
    }
    return 0;
}

 

 总结:perror和打印输出strerror(errno)的效果是一样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值