【C库函数】strerror函数详解

简介: 【C库函数】strerror函数详解

strerror

       返回错误码,所对应的错误信息

函数原型

char*strerror(interrnum);

参数详解

参数 errnum
解析 错误码信息(errno)

返回值详解

strerror函数就是返回这些错误码所对应错误信息的字符串起始地址给返回过来

什么是错误码?当我们在调用库函数失败的时候,就会把错误信息放在一个全局的变量errno(错误码)中。而错误码可能是0 、1 、2 、3 、4(这些数字就类似于网面错误信息‘404’一样)

下面展示一下这些错误码的所对应的错误信息

int main()
{
  printf("%s\n", strerror(0));//没有错误信息
  printf("%s\n", strerror(1));//操作被拒绝
  printf("%s\n", strerror(2));//没有这个文件或文件夹
  printf("%s\n", strerror(3));//没有这个进程
  return 0;
}

9959421345e0d49cba3979ff91599633_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png

函数讲解

       下面我将用malloc函数返回的错误信息演示strerror函数使用(malloc向堆区申请内存)

我把INT_MAX传给malloc函数,使得malloc函数开辟空间失败返回NULL,同时错误信息会放到全局变量errno中。用strerror函数解析错误信息

INT_MAX是整型最大值,而用INT_MAX这个符号需要调用limits.h头文件

errno是整型全局变量,存放错误信息,使用errno需要调用errno.h头文件

代码演示如下

#include<stdio.h>
#include<string.h>
#include<limits.h>
#include<errno.h>
int main()
{
  int* p = (int*)malloc(INT_MAX);
  if (p == NULL)//malloc开辟内存失败会返回一个空指针
  {
  printf("%s\n", strerror(errno));
  return 1;//失败返回1
  }
  //...
  return 0;//成功返回0
}
相关文章
|
存储 开发框架 .NET
C#数据去重的5种方式,你知道几种?
今天我们一起来讨论一下关于C#数据去重的的5种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式。当然欢迎你在评论区留下你觉得更好的C#数据去重的方式。
208 1
|
C++ Windows
vs2017下dump文件自动生成及dump文件的调试使用
vs2017下dump文件自动生成及dump文件的调试使用
662 0
vs2017下dump文件自动生成及dump文件的调试使用
|
Kubernetes 测试技术 应用服务中间件
k8s七层代理Ingress-nginx基于cookie、请求头、权重实现灰度发布
k8s七层代理Ingress-nginx基于cookie、请求头、权重实现灰度发布
高德地图目前是哪个集团下的公司?
其实在2014年02月,阿里巴巴就斥资11亿美元,完成对高德地图的全资收购,所以高德地图目前是属于阿里巴巴集团下的公司了。
3067 0
|
安全 网络安全 API
163邮箱imap服务器怎么填写
163邮箱imap服务器怎么填写
|
NoSQL 程序员 Linux
轻踩一下就崩溃吗——踩内存案例分析
踩内存问题分析成本较高,尤其是低概率问题困难更大。本文详细分析并还原了两个由于动态库全局符号介入机制(it's a feature, not a bug)触发的踩内存案例。
|
11月前
|
数据可视化 算法 Java
JAVA规则引擎工具
本文介绍了六款常用的Java规则引擎:Drools、IBM ODM、Easy Rules、jBPM、OpenL Tablets 和 Apache Camel。每款引擎都有其独特的特点和适用场景,如Drools的高效规则匹配、IBM ODM的Web界面管理、Easy Rules的轻量级特性、jBPM的流程管理、OpenL Tablets的Excel规则定义以及Apache Camel的路由和规则结合。选择合适的规则引擎可以显著提高系统的灵活性和可维护性。
748 0
|
关系型数据库 MySQL Linux
性能分析之解决 jbd2 引起 IO 高问题
【8月更文挑战第19天】性能分析之解决 jbd2 引起 IO 高问题
1014 0
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Cell
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。它是一个分布式数据库的NoSQL数据库,主要用于存储和处理海量数据。HBase的核心特性包括高可用性、高性能和高伸缩性。在阿里云开发者社区中,我们将介绍HBase的基本概念和架构,以及它的基本数据模型Cell。
886 0
|
存储 异构计算 索引
GGML 非官方中文文档(3)
GGML 非官方中文文档
399 0