当前位置: 首页> 健康> 母婴 > 57.【C语言】字符函数和字符串函数(strerror函数)

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

时间:2025/7/9 16:44:34来源:https://blog.csdn.net/2401_85828611/article/details/142306148 浏览次数:0次

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
关键字:57.【C语言】字符函数和字符串函数(strerror函数)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: