C语言王国——字符函数和字符串函数(2)

目录

5 strtok函数

5.1 函数的表达式

5.2 函数模拟

6 strstr函数

6.1 函数表达式

7 strerror函数

7.1 函数表达式

7.2 例子

 7.3 perror

8 strncpy、strncat、strncmp函数

四 结论


5 strtok函数

strtok函数我的理解是他是一个分割字符串的函数

5.1 函数的表达式

char* strtok( char* str, const char* sep);

*注意:

  1. sep指向一个字符串,此字符串为分隔符的字符集合。谨记sep是字符串,分隔字符的集合,就是说把分隔字符集中在sep中。
  2. strtok函数会在str字符串中找到下一个sep中的分隔字符,将其变为'\0',并且返回一个指向这个标记的指针。(这是strtok函数第一个参数不为NULL的情况)
  3. 诺第一个参数为NULL时,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  4. 如果字符串不存在更多的标记,则返回NULL指针。
  5. 注意strtok函数会改变被操作的字符串,所以此函数分隔的字符串一般都是临时拷贝的内容并且是可以修改的。

5.2 函数模拟

 "Hello world_xxxx"中空格和'_'为分隔符

#include <stdio.h>
#include <string.h>int main()
{char arr[] = "hello world_xxxx";char* sep = " _";char* str = NULL;for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep)){printf("%s\n", str);}return 0;
}


6 strstr函数

此函数是一个函数在另外一个函数中第一次出现的位置。

6.1 函数表达式

char* strstr( const char* str1,const char* str2);

*字符串的比较匹配不包含\0,以\0作为结束标志。


7 strerror函数

此函数就是可以把参数部分错误码对应的信息以字符串地址返回。

7.1 函数表达式

char* strerror( int errnum );

因为这个概念比较官方所以我就用引用大佬的话了:

在不同的系统和C语言标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头文件中说明 的,C语言程序启动的时候就会使用⼀个全面的变量errno来记录程序的当前错误码,只不过程序启动 的时候errno是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会讲对应 的错误码,存放在errno中,而⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是 有对应的错误信息的。strerror函数就可以将错误对应的错误信息字符串的地址返回。

什么意思呢?那就让姜糖给各位总结一下吧:

  • 要包含头文件errno.h
  • 此头文件中会用一个变量errno来记录程序错误码
  •  启动时为0表示没有错误,而一旦有错误,errno中的值就会于头文件中的字符串相对应方便我们理解。

7.2 例子

那就来举个例子方便大家理解吧;

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

 该指令是让我们以只读模式去打开一个"unexist.ent”文件但是此时我们是没有这个文件的,当此操作错误的时候,错误码对应的值就会赋给errno,然后我们判断pFile是否为NULL,也就是判断程序是否错误,然后我们再用strerror打印该错误。让我们运行一下来看看吧。

 7.3 perror

既然讲到了strerror函数那我在这里提一提另外一个函数吧那就是perror函数,他也是打印错误代码的原因的只不过strerroe是这么表示的:

printf("Error opening file unexist.ent: %s\n", strerror(errno));

而perror是这么表示的 :

perror("Error opening file unxist.ent");

perror的输入结果如下:

 

对比于strerror函数,perror函数打印完参数部分的字符串后,再打印一个冒号和一个空格,再打印错误信息。


8 strncpy、strncat、strncmp函数

为什么我在这里把这三个函数一起进行介绍呢因为这个函数和我前面介绍的有三个函数用法差不多,接下来就让我先来写一下他们的函数表达式吧:

char* strncpy( char* destination, const char* source, size_t num);
char* strncat( char* destination, const char* source, size_t num);
int strncmp( const char* destination, const char* source, size_t num);

有没有发现他们和前面代码的相似之处?——多了一个num,那么这个num变量有什么用呢?

strncpy函数中:规定原代码的拷贝的个数,诺原来字符串不足num个,则拷贝完后追加0,直到num个。

strncat:将原字符串前num个字符拷贝到目标函数后,诺原字符串不足num个则只追加原字符串中字符的个数。

strncmp中:比较前num个是否相等,其他一样。


四 结论

字符串函数中的使用都要包含头文件string,这里模拟函数只是给大家一种参考不一定完成一样,但利于大家理解,这些库函数也是人写的,他们这些程序员能做到的事情,为什么我们不能做到。那大家就一起跟随姜糖的脚步一步步成为大牛吧。谢谢大家的支持!希望大家发现姜糖的问题及时给姜糖指出来也别忘了一键三连哦。

大家如果对这些函数有兴趣,想知道姜糖是在哪里找的大家可以看看姜糖最初的文章里面推荐了一个网址https://legacy.cplusplus.com/,这个是专门用来查函数和库的。

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

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

相关文章

国联易安:网络反不正当竞争,要防患于未然

据市场监管总局官网消息&#xff0c;为预防和制止网络不正当竞争&#xff0c;维护公平竞争的市场秩序&#xff0c;鼓励创新&#xff0c;保护经营者和消费者的合法权益&#xff0c;促进数字经济规范健康持续发展&#xff0c;市场监管总局近日发布《网络反不正当竞争暂行规定》&a…

图解Mysql索引原理

概述 是什么 索引像是一本书的目录列表&#xff0c;能根据目录快速的找到具体的书本内容&#xff0c;也就是加快了数据库的查询速度索引本质是一个数据结构索引是在存储引擎层&#xff0c;而不是服务器层实现的&#xff0c;所以&#xff0c;并没有统一的索引标准&#xff0c;…

【分享】两种方法禁止修改Word文档

对于比较重要的Word文件&#xff0c;不想被随意编辑修改&#xff0c;可以试试以下两个方法&#xff0c;不清楚的小伙伴&#xff0c;一起来看看吧&#xff01; 方法1&#xff1a;设置“只读方式” 我们可以给Word文档设置以“只读方式”打开&#xff0c;这样就算编辑修改了文档…

[数据集][目标检测]焊接处缺陷检测数据集VOC+YOLO格式3400张8类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3400 标注数量(xml文件个数)&#xff1a;3400 标注数量(txt文件个数)&#xff1a;3400 标注…

用AI工具设计赛博朋克壁纸

用AI工具设计赛博朋克壁纸 今天我要向大家分享的项目十分直观且具有高流量&#xff0c;我坚信这会对大家有所帮助。我相信大家在壁纸创作者的作品中一定看过科幻和赛博朋克的元素&#xff0c;这些深具特色的未来科技主题的壁纸影响了现代设计的方向。 设计师们巧妙地运用了几…

鸿蒙HarmonyOS实战—如何使用Video组件播放视频

1.视频播放 鸿蒙系统中&#xff0c;关于视频播放&#xff0c;可以使用上层视频组件Video。 参数如下 src 支持file:///data/storage路径前缀的字符串&#xff0c;用于读取应用沙箱路径内的资源。需要保证目录包路径下的文件有可读权限。 说明&#xff1a;视频支持的格式是&am…

在Three.js中实现模型点击高亮:整合EffectComposer与OutlinePass的终极指南

效果【后期实现鼠标点击选中轮廓后给出一个弹窗显示相应的模型信息】 标签指示线参考我的上一篇文章 引言 Three.js不仅让WebGL的3D图形编程变得简单易懂&#xff0c;还通过其强大的扩展库支持丰富的后期处理效果&#xff0c;为3D场景增添无限魅力。本篇文章将引导您深入了…

实习面试题(答案自敲)、

1、为什么要重写equals方法&#xff0c;为什么重写了equals方法后&#xff0c;就必须重写hashcode方法&#xff0c;为什么要有hashcode方法&#xff0c;你能介绍一下hashcode方法吗&#xff1f; equals方法默认是比较内存地址&#xff1b;为了实现内容比较&#xff0c;我们需要…

使用from…import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在使用import语句导入模块时&#xff0c;每执行一条import语句都会创建一个新的命名空间&#xff08;namespace&#xff09;&#xff0c;并且在该命名…

词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码

实验原理&#xff1a; 词法分析是编译程序进行编译时第一个要进行的任务&#xff0c;主要是对源程序进行编译预处理之后&#xff0c;对整个源程序进行分解&#xff0c;分解成一个个单词&#xff0c;这些单词有且只有五类&#xff0c;分别时标识符、关键字&#xff08;保留字&a…

CentOS7配置国内清华源并安装docker-ce以及配置docker加速

说明 由于国内访问国外的网站包括docker网站&#xff0c;由于种种的原因经常打不开&#xff0c;或无法访问&#xff0c;所以替换成国内的软件源和国内镜像就是非常必要的了&#xff0c;这里整理了我安装配置的基本的步骤。 国内的软件源有很多&#xff0c;这里选择清华源作为…

终于来啦!Stable Diffusion 3将在6月12日正式开源

6月3日晚&#xff0c;著名开源大模型平台Stability AI的联合首席执行官Christian Laforte&#xff0c;在AMD的产品发布会上宣布&#xff0c;文生图模型 Stable Diffusion 3将于6月12日在Hugging Face开源权重。 本次开源的是Stable Diffusion 3的Medium模型&#xff0c;有20亿…

Python中数字比较与获取较大值的深入解析

目录 一、引言 二、Python数字类型概述 三、数字比较操作符 四、获取较大值的逻辑与实现 五、高级话题&#xff1a;使用内置函数和库 六、性能分析与优化 七、案例分析 八、总结与展望 一、引言 在编程世界中&#xff0c;数字的比较和获取较大值是基础且常见的操作。P…

Python中上下文管理器解析

文章目录 基本原理上下文管理器的工作原理自定义上下文管理器enter和exitcontextlib 模块 异常处理 Python中的上下文管理器&#xff08;Context Manager&#xff09;是一种用于管理资源的机制&#xff0c;特别是在文件操作、数据库连接和锁定等场景中非常有用。上下文管理器通…

SpringBoot中MyBatisPlus的使用

MyBatis Plus 是 MyBatis 的增强工具&#xff0c;提供了许多强大的功能&#xff0c;简化了 MyBatis 的使用。下面是在 Spring Boot 中使用 MyBatis Plus 的步骤&#xff1a; 添加依赖&#xff1a;在 Maven 或 Gradle 的配置文件中添加 MyBatis Plus 的依赖。 配置数据源&#…

Linux【安全 02】OpenSSH漏洞修复(离线升级最新版本流程)网盘分享3个安装包+26个离线依赖

OpenSSH离线升级最新版本流程 1. 漏洞信息2. 环境说明3.依赖安装3.1 在线安装3.2 离线安装 4.备份卸载4.1 备份4.2 卸载旧版本 5.安装5.1 zlib5.2 ssl5.3 openssh5.3.1 安装5.3.2 配置 6.脚本整理7.文件资源 本文仅针对CentOS7.8版本&#xff0c;其他版本未测试&#xff0c;安装…

Excel单元格格式无法修改的原因与解决方法

Excel单元格格式无法更改可能由多种原因造成。以下是一些可能的原因及相应的解决方法&#xff1a; 单元格或工作表被保护&#xff1a; 如果单元格或工作表被设置为只读或保护状态&#xff0c;您将无法更改其中的格式。解决方法&#xff1a;取消单元格或工作表的保护。在Excel中…

Hadoop伪分布式安装教程

Hadoop伪分布式安装教程 一、安装背景1.1 软件列表1.2 系统软件列表 二、安装Hadoop2.1 安装 Java 环境2.1.1 前期准备2.1.2 文件传输2.1.3 解压文件2.1.4 配置 jdk 的环境变量2.1.5 输入 java、javac、java -version 命令检验 jdk 是否安装成功 2.2 Hadoop 下载地址[hadoop](h…

一些关于深度聚类以及部分对比学习的论文阅读笔记

目录 资料SwAV问题方法方法的创新点为什么有效有什么可以借鉴的地方聚类Multi-crop 代码 PCL代码 Feature Alignment and Uniformity for Test Time Adaptation代码 SimSiam 资料 深度聚类算法研究综述(很赞&#xff0c;从聚类方法和深度学习方法两个方面进行了总结&#xff0…

基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究附录

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 背景数据说明数据来源思考 附录数据预处理导入包以及数据读取数据预览数据处理 相关性分析聚类分析数据处理确定聚类数建立k均值聚类模型 …