当前位置: 首页 > news >正文

strerror和perror函数的使用及其联系和区别

目录

一、strerror函数

1、函数原型

2、功能描述

3、错误码说明

4、示例代码

5、典型输出(Windows11+VS2022环境)

6、实际应用示例

二、perror函数

1、功能描述

2、示例代码

3、输出示例

三、对比总结


一、strerror函数

1、函数原型

char* strerror(int errnum);

2、功能描述

    strerror函数用于将错误码转换为对应的错误信息字符串。它接收一个错误码作为参数,返回该错误码对应的错误信息字符串的地址。

3、错误码说明

  • 在不同的操作系统和C语言标准库实现中,都定义了一系列标准错误码

  • 这些错误码通常定义在errno.h头文件中

  • C程序运行时使用全局变量errno来记录当前错误状态

  • 程序启动时errno初始值为0,表示没有错误

  • 当标准库函数发生错误时,会将对应的错误码存入errno

4、示例代码

#include <errno.h>
#include <string.h>
#include <stdio.h>int main()
{// 打印0~10错误码对应的信息for (int i = 0; i <= 10; i++) {printf("%d: %s\n", i, strerror(i));}return 0;
}

5、典型输出(Windows11+VS2022环境)

6、实际应用示例

#include <stdio.h>
#include <string.h>
#include <errno.h>int main()
{FILE *pFile = fopen("unexist.ent", "r");if (pFile == NULL) {printf("Error opening file unexist.ent: %s\n", strerror(errno));}return 0;
}


二、perror函数

1、功能描述

    perror函数是另一种输出错误信息的方式,它会自动将错误码转换为可读的错误信息并输出。它会:

  1. 先输出传入的参数字符串

  2. 然后输出一个冒号和空格

  3. 最后输出对应的错误信息

2、示例代码

#include <stdio.h>
#include <errno.h>int main()
{FILE *pFile = fopen("unexist.ent", "r");if (pFile == NULL) {perror("Error opening file unexist.ent");}return 0;
}

3、输出示例


三、对比总结

函数特点
strerror只转换错误码为字符串,不直接输出,需要配合printf等函数使用
perror自动完成错误信息输出,包含自定义前缀和格式化,使用更简便

        在实际编程中,可以根据需要选择使用strerrorperror来输出错误信息。perror更适合简单的错误报告,而strerror则提供了更大的灵活性,可以用于构建更复杂的错误信息。

http://www.dtcms.com/a/342275.html

相关文章:

  • 43-Python基础语法-3
  • QWidget/QMainWindow与QLayout的布局
  • CSDN使用技巧
  • Pandas中数据分组进阶以及数据透视表
  • 链表-143.重排链表-力扣(LeetCode)
  • 微信小程序集成vant-weapp时,构建npm报错的解决办法
  • 基于springboot的中医养生管理系统
  • Pytorch基础学习--张量(生成,索引,变形)
  • 火语言 RPA 进阶功能:让自动化更实用​
  • 交易高光时刻-01
  • SOP到自动化:一种适合小型金融机构的轻量级开源工具整合方案
  • Vue3+Spring Boot技术栈,前端提交混合表单数据(普通字段+文件字段),上传文件,后端插入数据,将文件保存到数据库
  • Docker端口映射与数据卷完全指南
  • 几张PPT快速了解云原生与华为云CCE方案
  • Eureka和Nacos的原理分析
  • openEuler系统中r如何将docker安装在指定目录
  • CentOS 7常用国内源配置:阿里云、腾讯云、华为云、清华源
  • 从聚类到集成,两种实用算法框架分享
  • 医疗信息化自主可控转型的实践探索 —— 以常德二院为例
  • 为什么调用API总返回404,该如何调试
  • 35、自主移动机器人 (AMR) 调度模拟 (电子厂) - /物流与仓储组件/amr-scheduling-electronics
  • 机器学习-集成算法
  • HarmonyOS 时钟应用开发详解:从零构建实时时钟组件
  • MS17-010永恒之蓝复现
  • Prometheus+Grafana 监控体系搭建:从入门到告警配置
  • open3d-点云函数:变换:旋转,缩放、平移,齐次变换(R,T)等
  • 从“卡脖子”到“自主可控”!电科金仓+东华医为生态协同,打造医疗新范式
  • postman接口自动化测试
  • NavA3——双VLM架构下的先“推理解析”后“定位导航”:理解任意指令,导航至任意地点,查找任意目标
  • opencv基础学习与实战(3)图像形态学与边缘检测