strerror函数介绍

article/2025/10/14 17:02:40

认识strerror

库函数调用失败的时候会产生错误码,而每一个错误码对应着一条错误信息,strerror函数的作用就是将错误码给转化成错误信息。
在C语言中有一条全局的错误码errno,在程序运行过程中,只要库函数调用失败,我们就会把此处产生的错误码放入变量errno中。
返回值和参数:char * strerror ( int errnum );该函数的参数就是一个错误码,输入该错误码后,经函数内部处理,将该错误码转化成一条错误信息(类型是字符串)并将该错误信息(字符串)的地址返回。

示例

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

该代码中,FILE是一种代表“文件”的数据类型,fopen是一个功能为打开文件/文件夹的函数,参数是由文件夹名所构成的字符串(的地址),还有打开的方式对应字符串。如果找不到对应的文件夹,则返回空指针。
该代码的结果是
在这里插入图片描述
值得注意的是,因为该函数仅仅是将错误码转化成错误信息,但却只返回错误信息地址而并没有将他打印出来,所以我们需要再借用printf函数将它打印出来。
那有没有不需要借用printf直接一步到位的函数呢?
答案是有的,他就是perror函数。

perror函数介绍

该函数集转换和打印功能于一身,它会自动读取之前产生的错误码,将其转换成错误信息并且将它打印出来。
示例如下:

int main()
{FILE* pf = fopen("unexist.ent", "r");if (pf == NULL){printf("%s\n", strerror(errno));perror("我要上北大");return 1;}fclose(pf);pf = NULL;return 0;
}

在这里插入图片描述
结合图片和代码可以看出,perror函数无需输入就可以读取错误码并完成其转换和打印工作,并且在perror函数后的小括号中插入一个字符串,该字符串会同步得传到打印的错误信息的前面(中间隔了一个“:”和“ ”(空格))。


http://chatgpt.dhexx.cn/article/WVEUis17.shtml

相关文章

strerror perror

strerror这个函数把错误码转化为错误信息,把错误信息的起始地址返回 X86下的代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { printf("%s\n", strerror(0)); printf("%s\n", strerror(1…

关于strerror

1功能 strerror用于返回错误码信息的首字符的地址。 可以这样理解&#xff0c;函数运行过程中如果失败的话&#xff0c;会返回一个错误码放在errno中&#xff0c;&#xff08;原先设计中就已经存在的&#xff09;调用strerror函数的话&#xff0c;可以打印对应的错误信息 2 …

Multipass虚拟机入门教程

目录 一、Multipass介绍 二、Multipass的安装 1. 系统版本 2. 下载地址和官网教程 3. 安装 4. 查看版本并测试是否安装成功 5. 若启动失败 三、Multipass的简单使用 1. 设置虚拟化提供方式&#xff08;忽略该步骤&#xff09; 2. 创建名为test虚拟机&#xff0c;分配…

服务器vmware新建虚拟机教程,如何创建虚拟机教程全解

这部分教程我们将学习的是如何创建虚拟机。在创建虚拟机之前&#xff0c;vSphere Client是必要的软件之一&#xff0c;它用于访问ESX主机或vCenter的图形管理用户界面。 vSphere Client安装在Windows计算机上&#xff0c;它是与虚拟基础架构进行交互的主要方法。 1.安装vSphere…

专为折腾而生!老旧电脑安装PVE虚拟机保姆教程

专为折腾而生&#xff01;老旧电脑安装PVE虚拟机保姆教程 这几天玩VMware虚拟机上瘾&#xff0c;感觉特别有意思。然而我其实并不满足于只是在这种软件层面上玩玩&#xff0c;而想挑战更高级的玩法&#xff0c;比如说玩玩可以安装在实体机上的虚拟机系统~~ 说直接点就是我想在…

虚拟机Hyper-V的安装以及使用教程

目录 前言 一、什么是虚拟机Hyper-V&#xff1f; 二、使用步骤 虚拟机的安装 前言 Hyper-V是Windows操作系统提供的虚拟机管理平台&#xff0c;所有提供Hyper-V功能的Windows操作系统都可以根据本论文的内容安装并管理虚拟机。具体来说&#xff0c;Hyper-V 提供硬件虚拟化…

VirtualBox基础使用教程

选择VirtualBox而不是VMware Workstation的原因:VirtualBox是开源软件,对于个人的Linux学习来说,既免费又够用,且相较于VMware Workstation来说更为小巧,也没有那么多的自启动服务,不会在你不使用虚拟机的时候也有那么多服务在后台运行。 下载并安装VirtualBox 注:以下…

VMWare安装Linux虚拟机详细教程

使用VMware创建Linux并配置网络 1. 创建虚拟机&#xff0c;选择自定义 2. 选择硬件兼容性 3. 选择稍后安装操作系统 4. 选择Linux系统 5. 创建虚拟机名称和位置 6. 根据需求选择处理器 8. 选择虚虚拟机内存 9. 选择虚拟机的网络类型 10. 选择I/O控制器类型 11. 选择磁盘类型 1…

华为虚拟机服务器怎么使用教程,虚拟机装服务器教程

虚拟机装服务器教程 内容精选 换一换 应用容器化改造有三种方式,您可单击这里查看。本教程以某游戏为例,将该游戏进行微服务的架构改造,再进行容器化。本教程不对改造细节做深度讲解,仅讲解大致的建议。如需要详细了解容器化改造的过程,请单击服务咨询。本章节主要讲解游戏…

解决oracle数据库登录缓慢的问题

在连接tmboot开启服务的时候&#xff0c;tmboot初始化进程十分缓慢&#xff0c;于是查看日志和源码&#xff0c;发现是启动进程的时候&#xff0c;需要连接数据库进行初始化。 但是我本身在连接数据库的时候&#xff0c;用conn 连接对应数据库的时候都需要十秒才能连接上&…

数据库的登陆方法

数据库的两种登陆方法 作者&#xff1a;吴炳耀 完成时间&#xff1a;2019.1.18 当我们进入数据库系统时&#xff0c;服务器类型一般都是选数据库引擎&#xff0c;因为其他类型我们用到的机会是非常少的 服务器名称在我们安装时就已自动分配好,如果没有我们可以输入&#xff1a;…

【数据库】浅析登录名与用户的联系

前言&#xff1a;当我们学到“数据库安全性控制”这章时&#xff0c;会遇到登录名与用户这两个概念。如果没有理清楚&#xff0c;那么在SQL Server 软件中会不知如何下手。本篇文章就是来浅析他们之间的关系以及再该软件中如何创建。 一、登录名 我们登陆SQL Server软件时&am…

用命令行登录并操作数据库

一、数据库的登录及数据定义 1、登录到数据库 首先打开Mysql安装目录中的bin目录&#xff0c;之后在地址栏输入cmd&#xff0c;回车。我的是安装在了C盘。 ​​​​ 进入到了命令行界面&#xff0c;并输入mysql -u root -p&#xff0c;回车后再输入密码&#xff0c;显示如下界…

C#连接数据库的登录界面

首先建立一个数据库&#xff0c;是在Thisone的数据库里建立的一个Resign表&#xff0c;里面有两个变量&#xff0c;一个是SID一个是Skey&#xff0c;就是用户名和密码。 下面打开visual studio&#xff0c;新建项目&#xff0c;搭建好自己的界面。 我这里就是简单的登录界面&am…

达梦数据库新创建用户登录报错“登录失败次数超过限制”

问题描述 最近遇到数据库新创建A用户&#xff0c;登录失败的情况。创建后使用A用户第一次登录报错&#xff1a;”登录失败次数超过限制“的问题。多次登录用户被锁定后&#xff0c;解锁后登录还是相同的错提示。数据库版本&#xff1a;DM8 1-1-156 排查步骤 1、新建实例&…

Android 连接数据库实现登录注册功能(SQLite)

什么是SQLite SQLite 是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 以下是一些关于SQLite学习的有用的网站&#xff1a; 1、SQLite Home Page - …

达梦数据库入门

测试版本&#xff1a;达梦6 主要内容&#xff1a;数据库登录、数据库创建、用户创建、授权等。 说明&#xff1a;数据库有两种方式常用的使用方式&#xff0c;有达梦自带的比较友好的达梦管理工具&#xff0c;比较适用于新手。这里主要介绍的是第二种方式,命令行方式。 一、达梦…

登录页面连接数据库

壹 如果每一款APP的登录界面审核机制为 " admin".equles(username)&&"123456".equles(password)那么局限性太高&#xff0c;数据成本高&#xff0c;我们之所以连接数据库&#xff0c;是因为APP对应着多个用户&#xff0c;而不是一个用户。 贰 &a…

java完成登录页面+连接数据库

java完成登录页面连接数据库 所用的包简单介绍&#xff1a; 部分资料来自网上&#xff0c;如有侵权联系删除。 ActionEvent:处理东、南、西、北四个按钮&#xff0c;以及文本框的actionevent事件。当事件发生&#xff0c;&#xff0c;监视器计算字符的长度&#xff0c;并在命…

Java实现登录[数据库]

和上篇的随机点名系统一样&#xff0c;都是使用MySQL数据库来实现&#xff0c;因为刚学所以写点简单例子满足下自己&#xff1b; 需求分析&#xff1a; 1、输入用户名和密码 2、与数据库中的记录进行比较 原理比较 简单&#xff0c;直接贴代码吧。 import java.sql.Connec…