57.【C语言】字符函数和字符串函数(strerror函数)

目录

11.strerror函数

*简单使用

*错误码打印

*实际的用法

*附:VS中errno.h对错误码的分类


11.strerror函数

*简单使用

strerror string error

cpuscplus的介绍 点我跳转

翻译:

函数

strerror


char * strerror ( int errnum );

得到指向错误信息字符串(简称错误码)的指针

解释errnum的值,产生一条描述错误情况的信息的字符串,就像被库函数设置为errno一样

这个返回的指针指向一个静态的已分配的且不能被程序修改的字符串,进一步调用此函数可能会覆盖内容(不需要特定的库的实施,避免数据竞争)

strerror产生的错误信息的字符串可能特定于每个系统和库实现

参数


errnum:错误码

返回值


一个指向用于描述错误码的错误信息字符串的指针

 简明扼要:strerror的作用:把错误码翻译成错误信息

*错误码打印

for循环打印错误码:

#define   _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main()
{for (int i=0;i<141;i++){printf("%d.%s\n",i,strerror(i));}return 0;
}

错误码35,37,错误码43~错误码99,错误码131都显示未知错误(Unknown Error)

*实际的用法

编译以下代码,将exe文件放入没有a.txt的目录下运行

#define   _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main()
{FILE* pf = fopen("a.txt", "r");if (pf == NULL){printf("文件打开失败,原因是:%s", strerror(errno));return 1;//错误返回}fclose(pf);pf = NULL;return 0;
}

可见,strerror用来帮助查bug

其实用perror更简单

printf("文件打开失败,原因是:%s", strerror(errno));

等价于

perror("文件打开失败,原因是:");

perror==printf+strerror

附:点我查看cplusplus对perror的介绍

*附:VS中errno.h对错误码的分类

// Error codes
#define EPERM           1
#define ENOENT          2
#define ESRCH           3
#define EINTR           4
#define EIO             5
#define ENXIO           6
#define E2BIG           7
#define ENOEXEC         8
#define EBADF           9
#define ECHILD          10
#define EAGAIN          11
#define ENOMEM          12
#define EACCES          13
#define EFAULT          14
#define EBUSY           16
#define EEXIST          17
#define EXDEV           18
#define ENODEV          19
#define ENOTDIR         20
#define EISDIR          21
#define ENFILE          23
#define EMFILE          24
#define ENOTTY          25
#define EFBIG           27
#define ENOSPC          28
#define ESPIPE          29
#define EROFS           30
#define EMLINK          31
#define EPIPE           32
#define EDOM            33
#define EDEADLK         36
#define ENAMETOOLONG    38
#define ENOLCK          39
#define ENOSYS          40
#define ENOTEMPTY       41// Error codes used in the Secure CRT functions
#ifndef RC_INVOKED#define _SECURECRT_ERRCODE_VALUES_DEFINED#define EINVAL          22#define ERANGE          34#define EILSEQ          42#define STRUNCATE       80
#endif// Support EDEADLOCK for compatibility with older Microsoft C versions
#define EDEADLOCK       EDEADLK// POSIX Supplement
#ifndef _CRT_NO_POSIX_ERROR_CODES#define EADDRINUSE      100#define EADDRNOTAVAIL   101#define EAFNOSUPPORT    102#define EALREADY        103#define EBADMSG         104#define ECANCELED       105#define ECONNABORTED    106#define ECONNREFUSED    107#define ECONNRESET      108#define EDESTADDRREQ    109#define EHOSTUNREACH    110#define EIDRM           111#define EINPROGRESS     112#define EISCONN         113#define ELOOP           114#define EMSGSIZE        115#define ENETDOWN        116#define ENETRESET       117#define ENETUNREACH     118#define ENOBUFS         119#define ENODATA         120#define ENOLINK         121#define ENOMSG          122#define ENOPROTOOPT     123#define ENOSR           124#define ENOSTR          125#define ENOTCONN        126#define ENOTRECOVERABLE 127#define ENOTSOCK        128#define ENOTSUP         129#define EOPNOTSUPP      130#define EOTHER          131#define EOVERFLOW       132#define EOWNERDEAD      133#define EPROTO          134#define EPROTONOSUPPORT 135#define EPROTOTYPE      136#define ETIME           137#define ETIMEDOUT       138#define ETXTBSY         139#define EWOULDBLOCK     140
#endif // _CRT_NO_POSIX_ERROR_CODES

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置环境-keil

配置keil -- 先将keil安装配置好&#xff0c;包括库 一、STM32 -- STM32是意法半导体&#xff08;意大利&#xff09;采用ARM公司设计的内核&#xff0c;设计一系列32位单片机芯片。 1、STM32开发的几种方式 2、STM32寄存器和库函数版本的工程创建 新建文件夹 复制相关文件…

web基础之RCE

简介&#xff1a;RCE称为远程代码执行漏洞&#xff1b;是互联网的一种安全漏洞&#xff1b;攻击者可以直接向后台服务器远程注入操作系统命令&#xff1b;从而操控后台系统&#xff1b;也是CTF比较常考的一个方面 1、eval执行 &#xff08;1&#xff09;分析后端代码&#xf…

Redis学习——数据不一致怎么办?更新缓存失败了又怎么办?

文章目录 引言正文读写缓存的数据一致性只读缓存的数据一致性删除和修改数据不一致问题操作执行失败导致数据不一致解决办法 多线程访问导致数据不一致问题总结 总结参考信息 引言 最近面试快手的时候被问到了缓存不一致怎么解决&#xff1f;一开始还是很懵的&#xff0c;因为…

线性代数之QR分解和SVD分解

文章目录 1.QR分解Schmidt正交化Householder变换QR分解的应用 2. 求矩阵特征值、特征向量的基本方法3.SVD分解SVD分解的应用 参考文献 1.QR分解 矩阵的正交分解又称为QR分解&#xff0c;是将矩阵分解为一个正交矩阵Q和一个上三角矩阵R的乘积的形式。 任意实数方阵A&#xff0c…

从用户数据到区块链:Facebook如何利用去中心化技术

在数字化时代&#xff0c;用户数据的管理和保护已成为科技公司面临的重大挑战。作为全球最大的社交网络平台之一&#xff0c;Facebook不仅在用户数据的处理上积累了丰富的经验&#xff0c;也在探索如何利用去中心化技术&#xff0c;如区块链&#xff0c;来改进其数据管理和用户…

健身房预约小程序定制搭建,数字化运营管理

目前&#xff0c;健身已经成为了大众日常生活中不可或缺的一部分&#xff0c;不管是健身跑步、打羽毛球等&#xff0c;都受到了大众的欢迎&#xff01;随着健身行业的快速发展&#xff0c;为了提高大众的健身体验&#xff0c;健身房预约系统得到了广泛发展。预约系统不仅解决了…

深入MySQL的索引实践及优化

文章目录 一、什么是索引二、数据结构——为什么是B树平衡二叉查找树红黑树B树&#xff08;多叉&#xff09;B树&#xff08;多叉&#xff09; 三、MySQL索引实战1.索引创建(1)自动创建索引(2)手动创建非聚簇索引(3)索引的代价 2.B树索引原则&#xff08;1&#xff09;等值匹配…

引领智能家居新风尚,WTN6040F门铃解决方案——让家的呼唤更动听

在追求高效与便捷的智能家居时代&#xff0c;每一个细节都承载着我们对美好生活的向往。WTN6040F&#xff0c;作为一款专为现代家庭设计的低成本、高性能门铃解决方案&#xff0c;正以其独特的魅力&#xff0c;悄然改变着我们的居家生活体验。 芯片功能特点&#xff1a; 1.2.4…

4.qml单例模式

这里写目录标题 js文件单例模式qml文件单例模式 js文件单例模式 直接添加一个js文件到qml中 修改内容 TestA.qml import QtQuick 2.0 import QtQuick.Controls 2.12 import "./MyWork.js" as MWItem {Row{TextField {onEditingFinished: {MW.setA(text)}}Button…

【D3.js in Action 3 精译_022】3.2 使用 D3 完成数据准备工作

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…

飞机表面缺陷检测系统源码分享

飞机表面缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

3.Java高级编程实用类介绍(一)

三、Java高级编程实用类介绍(一) 文章目录 三、Java高级编程实用类介绍(一)一、枚举类型二、包装类三、Math 一、枚举类型 使用enum进行定义 public enum 枚举名字{值1,值2.... }二、包装类 每个基本类型在java.lang包中都有一个相应的包装类 /** new包装类&#xff08;字符…

4、(PCT)Point Cloud Transformer

4、&#xff08;PCT&#xff09;Point Cloud Transformer 论文链接&#xff1a;PCT论文链接 本篇论文介绍Transformer在3D点云领域的应用&#xff0c;Transformer在NLP领域和图像处理领域都得到了广泛的应用&#xff0c;特别是近年来在图像领域的应用&#xff0c;本篇论文主要…

Neo4j入门案例:三星堆

创建一个关于三星堆的知识图谱可以是一个非常有趣的项目&#xff0c;它可以帮助理解如何使用Neo4j来存储和查询复杂的关系数据。三星堆文化以其独特的青铜器、金器和其他文物而闻名&#xff0c;这为我们提供了一个丰富的历史背景来构建知识图谱。 数据模型定义 实体类型&#…

[Python]一、Python基础编程

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程 1. Python简介 Python优点: 学习成本低开源适应人群广泛应用领域广泛1.1 Python解释器 下载地址:Download Python | Python.org 1.2 Python开发IDE -- Pycharm 2. 基础语法…

JAVA—组件及事件处理

对于使用JAVA的GUI程序的学习了解&#xff0c;学习常用的组件&#xff0c;容器和常用的一些API 1.java Swing 概述 java Swing 包下提供了强大的用于开发桌面程序的API 理解面向对象编而简单学习一些内容 2.窗口 介绍&#xff1a; 窗口是基于JFrame类实例的一个底层容器&#…

C++中的new与delete

目录 1.简介 2.底层 1.简介 new是升级版的malloc&#xff0c;它会先开空间再去调用构造函数。 delete是升级版的free&#xff0c;它会先调用析构函数再free掉空间。 class A { public:A(int a10, int b10){a a1;b b1;}private:int a;int b; };int main() {//new会先开空间…

Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))

2024每日刷题&#xff08;159&#xff09; Leetcode—322. 零钱兑换 算法思想 dp实现代码 class Solution { public:int coinChange(vector<int>& coins, int amount) {int m coins.size();int n amount;int dp[m 1][n 1];memset(dp, 0x3f, sizeof(dp));dp[0][…

Vue(12)——路由的基本使用

VueRouter 作用&#xff1a;修改地址栏路径时&#xff0c;切换显示匹配的组件 基本步骤&#xff08;固定&#xff09; 下载&#xff1a;下载VueRouter模块到当前工程引入安装注册创建路由对象注入&#xff0c;将路由对象注入到new Vue 实例中&#xff0c;建立关联 发现了#/表…

高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)

1. 安装 npm i amap/amap-jsapi-loader --save移步&#xff1a;官方文档 2. map组件封装 <script lang"ts" setup> import AMapLoader from amap/amap-jsapi-loader import { onMounted, ref } from vue import { propTypes } from /utils/propTypesdefineO…