字符串相关函数【超详细】(strcpy,strstr等string.h中的函数)

文章目录

  • strlen
    • 库中函数定义
    • 函数作用
    • 函数大概“工作”流程
    • 函数使用注意(要求)
    • 函数使用例举
  • strcpy
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举
  • strcat
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举
  • strcmp
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举
  • strncpy
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举
  • strncat
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举
  • strncmp
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举
  • strstr
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数使用例举
  • strtok
    • 库中函数定义
    • 函数作用
    • 函数使用注意(要求)
    • 函数大概“工作”流程
    • 函数使用例举

strlen

库中函数定义

size_t strlen(const char *str)

  • 返回值【size_t】:无符号整型
  • 函数参数【str】:要计算长度的字符串的首地址

函数作用

计算字符串的有效长度【’\0’之前的字符个数,不包括’\0’】

函数大概“工作”流程

strlen接收传入的字符串的首地址后开始遍历字符串,遇到第一个‘\0’就停止计算,返回计算长度

函数使用注意(要求)

  1. 包含头文件 string.h
  2. 函数参数指向的字符串必须要有’\0’作为结束标志
  3. 遇到‘\0’就停止计算【函数参数指向的字符串中有多个‘\0’时,只计算第一个‘\0’之前的字符个数

函数使用例举

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strcpy

库中函数定义

char* strcpy(char* destinatuon , const char* source)

  • 返回值:目标字符串(destinatuon)的首地址
  • 第一个参数(destinatuon):目标字符串的首地址
  • 第二个参数(source):源字符串的首地址

函数作用

将源字符串(函数参数2:source)全部拷贝到目标字符串(函数参数1:destinatuon)

函数使用注意(要求)

  1. 包含头文件 string.h

  2. 源字符串(函数参数2:source)结尾必须要有’\0’

  3. 会将源字符串中的’\0’拷贝到目标空间。【以此作为字符串结束标志】

  4. 目标空间【函数参数1:destinatuon的空间】必须可修改。

  5. 目标空间必须足够大,以确保能存放源字符串。

函数大概“工作”流程

strcpy将源字符串一个一个拷贝到目标字符串中,当遇到源字符串第一个‘\0’时就停止拷贝,并把源字符串的‘\0’也拷贝回目标字符串,最后返回目标字符串的首地址

函数使用例举

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strcat

库中函数定义

char * strcat( char *destination, count char * source)

  • 返回值【char*】:目标字符串的首地址
  • 参数1【destination】:目标字符串的首地址
  • 参数2【 source】:源字符串的首地址

函数作用

把源字符串连接目标字符串之后

函数使用注意(要求)

  1. 包含头文件 sring.h
  2. 目标空间必须可以修改
  3. 源字符串【函数参数2 source】必须以’\0’ 结束
  4. 目标字符串中也得有‘\0’,否则不知道从哪里开始追加【如果目标空间有多个‘\0’,则从第一个‘\0’后开始追加(连接)
  5. 目标空间必须有足够的大,能容纳下连接上源字符串之后的长度。

函数大概“工作”流程

strcat先遍历找到目标字符串第一个‘\0’,再用源字符串的第一个字符将目标字符串的第一个‘\0’覆盖,
并让
字符串的字符一个一个连接在目标字符串之后
直到遇到字符串的第一个‘\0’就停止连接,再将字符串的‘\0’也连接在目标字符串末尾,作为连接成功后的字符串的结束标志
最后再返回字符串的首地址

函数使用例举

在这里插入图片描述

一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strcmp

库中函数定义

int strcmp ( const char * str1, const char * str2 );

  • 返回值【int】:字符串str1>字符串str2就返回正数,等于就返回0,小于就返回负数
  • 函数参数1:参与比较的字符串的首地址
  • 函数参数2:参与比较的字符串的首地址

函数作用

比较两个字符串的大小

函数使用注意(要求)

  • 包含头文件 string.h
  • str1和str2都必须有‘\0’

函数大概“工作”流程

strcmp同时遍历str1和str2,一个一个地比较它们两个对印字符的大小,如果对应字符相等则比较下一个对对应的字符,只要比出大小就直接以这个比较的大小作为最终结果,返回正/负数/0

在这里插入图片描述

函数使用例举

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strncpy

库中函数定义

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

  • 返回值【char*】:返回目标字符串【函数参数1 destination】的首地址
  • 参数1【 destination】:目标字符串的首地址
  • 参数2【source】:源字符串的首地址
  • 参数2【num】:要拷贝的字符个数

函数作用

把源字符串的前num【函数参数3】个字符拷贝到目标字符串中。
如果num大于源字符串长度才会在拷贝之后加上‘\0’,小于则不会加‘\0’

函数使用注意(要求)

  1. 包含头文件 string.h
  2. 目标空间【函数参数1:destinatuon的空间】必须可修改。
  3. 目标空间必须足够大,以确保能存放源字符串。

函数大概“工作”流程

strncpy将源字符串中的字符一个一个拷贝到目标字符串中
如果在拷贝 num 个字符之前找到 字符串 字符串的末尾【即num大于源字符串的长度】,则 在此之后,目标字符串都用==’\0’填充,直到总共写入 num 个字符。
如果如果 字符串(source) 的长度大于 num,则
不会在目标字符串中追加 ‘\0’ 字符==

函数使用例举

在这里插入图片描述

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strncat

库中函数定义

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

  • 返回值【char*】:返回目标字符串【函数参数1 destination】的首地址
  • 参数1【 destination】:目标字符串的首地址
  • 参数2【source】:源字符串的首地址
  • 参数2【num】:要连接的字符个数

函数作用

将源字符串的前num个字符连接到目标字符串之后

函数使用注意(要求)

  1. 包含头文件 string.h
  2. 目标空间【函数参数1:destinatuon的空间】必须可修改。
  3. 目标空间必须有足够的大,能容纳下连接上源字符串之后的长度。
  4. 目标字符串中也得有‘\0’,否则不知道从哪里开始追加【如果目标空间有多个‘\0’,则从第一个‘\0’后开始追加(连接)

函数大概“工作”流程

strncat将源字符串的前num个字符连接在目标字符串之后,
如果源字符串的长度小于 num,则仅连接源字符串‘\0’ 之前的内容,并在连接的字符串末尾加‘\0’
如果源字符串的长度大于 num,则仅连接源字符串前num 个字符并在连接的字符串末尾加‘\0’

函数使用例举

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strncmp

库中函数定义

int strncmp ( const char * str1, const char * str2, size_t num );

  • 返回值【int】:字符串str1>字符串str2就返回正数,等于就返回0,小于就返回负数
  • 函数参数1【str1】:参与比较的字符串的首地址
  • 函数参数2【str2】:参与比较的字符串的首地址
  • 函数参数3【num】:参与比较的最大字节数

函数作用

让str1的前num个字符和str2前num个字符相比较,并得出结果

函数使用注意(要求)

  • 包含头文件string.h
  • str1和str2都必须有‘\0’做结束标志

函数大概“工作”流程

strncmp一对一对比较str1的前num个字符和str2前num个字符,如果这对字符相等就比较下一对,如果不相等就直接以这个比较结果作为最终结果

如果再比较到num对之前str1和str2中任意一个遇到了‘\0’,则只对比‘\0’之前的字符对,返回0【此时str1与str2相等】
如果一直比较到了第num对字符,则也返回0【此时str1与str2相等】
在这里插入图片描述

函数使用例举

在这里插入图片描述
在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strstr

库中函数定义

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

  • 返回值【char*】:如果str2是str1的子串就返回str2第一次出现在str1中的位置的地址;如果str2不是str1的子串就返回NULL
  • 函数参数1【str1】:要扫描(遍历)的字符串
  • 函数参数2【str2】:包含要匹配的字符串的字符串

函数作用

判断str2是不是str1的一部分【子串】

函数使用注意(要求)

  • 包含头文件string.h
  • str1和str2都必须有‘\0’做结束标志

函数使用例举

在这里插入图片描述

在这里插入图片描述
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

strtok

库中函数定义

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

  • 返回值【char* 】:如果找到标记就返回指向标记要划分的子串的开头,找不到标记就返回NULL
  • 函数参数1【str】: 第一次使用时为要分割子串的字符串的首地址,之后为NULL
  • 函数参数2【delimiters】:作为分割标记的标记集合的首地址【分割标记可以是任何字符分隔】

函数作用

根据分割标记将字符串分割,并返回分割出的子串的首地址

函数使用注意(要求)

  • 包含头文件string.h
  • str1和str2都必须有‘\0’做结束标志
  • strtok函数会改变被操作的字符串【会把分割符号改为‘\0’】,所以在使用strtok函数切分的字符串一 般都是临时拷贝并且可修改的内容。
  • 第一次使用strtok时传函数参数1时传要分割子串的字符串的首地址,之后传NULL

函数大概“工作”流程

strtok函数找到str中的下一 个标记,并将其用‘\0’结尾,返回一个指向这个标记的开头的指针。
strtok函数的第一 个参数不为时NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
strtok函数的第一个参数为NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
直到要分割子串的字符串中没有分割标记时,就返回NULL

函数使用例举

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go 的命令行解析 flag 包如何扩展新类型呢?

上篇文章 说到,除布尔类型 Flag,flag 支持的还有整型(int、int64、uint、uint64)、浮点型(float64)、字符串(string)和时长(duration)。 flag 内置支持能满足…

transformer和vit学习笔记

以下记录自己对transformer的学习笔记,可能自己看得懂【久了自己也忘了看不懂】,别人看起来有点乱。以后再优化文档~ 小伙伴请直接去看学习资源: Transformer的理解T-1_哔哩哔哩_bilibili 首先,时序处理:一些模型的出…

Two-factor authentication (2FA) is required for your GitHub account解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【基于电商履约场景的 DDD 实战】DDD业务建模第二部分:履约的战术设计(梳理整个战术设计流程图)

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

Java笔记 --- 二、Stream流

二、Stream流 结合Lambda表达式,简化集合、数组的操作 获取Stream流对象 单列集合获取Stream流 双列集合获取Stream流 数组获取Stream流 一堆零散的数据获取Stream流 Stream流的静态方法of的形参是一个可变参数,可以传递零散数据,也可以传递…

【Python】02快速上手爬虫案例二:搞定验证码

文章目录 前言1、不要相信什么验证码的库2、以古诗文网为例,获取验证码1)code_result.py2)gsw.py 前言 提示:以古诗文网为例,获取验证码: 登录:https://so.gushiwen.cn/user/login.aspx 1、不…

【C++】类与对象(一)

前言 类与对象(一) 文章目录 一、面向对象和面向过程的对比二、类的引入2.1 C中的结构体2.2 类2.3 类定义方法2.4 修饰限定符2.5 封装2.6 类的实例化2.7 类对象的大小 三、this指针3.1 this 指针的使用 一、面向对象和面向过程的对比 面向过程编程是将程…

【Docker】nacos集群搭建Nginx负载均衡

目录 一、mysql安装与基操 1.1 数据准备 1.2 创建mysql与数据表 二、Nacos集群部署 2.1 创建nacos及配置 2.2 创建Nginx容器 一、mysql安装与基操 1.1 数据准备 拉取mysql docker pull mysql:5.7(版本) 定义挂载目录 mkdir -p /mysql/{conf,data,script} 配置my.c…

【排序4】探秘归并排序:提高程序效率的必备技巧

😊归并排序 🎊1、基本思想🎊2、代码示例🎊3、非递归实现🎊4、归并排序的性能分析🎊5、归并排序的优缺点🎊6、归并排序的应用场景🎊7、总结 🎊1、基本思想 归并排序&…

(笔记总结)C/C++语言的常用库函数(持续记录,积累量变)

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

【vue3源码】vue源码探索之旅:项目介绍

简言 记录下我眼中的vue源码项目。 gitHubvue3项目仓库 项目要求: vue版本 3.4.15nodeV18.12.0以上使用pnpm包管理器vitest测试框架Vue3 vue3是渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的 Web 前端框架。 Vue 是一个框架,也是一个生态。其功能覆盖了大部分…

Spark运行架构以及容错机制

Spark运行架构以及容错机制 1. Spark的角色区分1.1 Driver1.2 Excuter 2. Spark-Cluster模式的任务提交流程2.1 Spark On Yarn的任务提交流程2.1.1 yarn相关概念2.1.2 任务提交流程 2.2 Spark On K8S的任务提交流程2.2.1 k8s相关概念2.2.2 任务提交流程 3. Spark-Cluster模式的…

HBase入门:运行机制

文章目录 HBase 系统架构客户端ZooKeeper 服务器Master 主服务器Region 服务器 Region 服务器工作原理用户读写数据的过程缓存的刷新StoreFile合并 Store 的工作原理HLog 的工作原理 HBase 系统架构 HBase 的系统架构包括客户端、ZooKeeper 服务器、Master 主服务器、Region服…

Linux文本三剑客---grep

grep(从文本或字符串种过滤特定内容。) 格式:Usage: grep [OPTION]... PATTERNS [FILE]... 常用选项: -E 等价于 egrep 扩展正则 -i 忽略大小写 -w 匹配单词 -o 仅显示匹配内容 -r 递归匹配 -c 统计匹配的行数 -v 取反 -n 行号 -A…

vue2 事件总线

原图下载:https://download.csdn.net/download/weixin_47401101/88788636

如何在Shopee平台上进行宠物类目的选品丨shopee宠物选品

在Shopee平台上进行宠物类目的选品是一个重要的任务,它直接关系到卖家的销售业绩和市场竞争力。为了成功选择适合的宠物用品,在选品过程中,卖家可以遵循以下策略: 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#…

ZYNQ AC7020C的“点LED”实验

一、创建 Vivado 工程 1、启动 Vivado 2、在 Vivado 开发环境里点击“Create New Project”,创建一个新的工程 3、弹出一个建立新工程的向导,点击“Next” 4、在弹出的对话框中输入工程名和工程存放的目录。需要注意工程路径“Project location”不能有…

瑞丽杂志引领潮流,VOSS眼镜概念店开启奢华新纪元!

近日,由《瑞丽》杂志社举办的2023第4届瑞丽轻奢品牌大赛,以“轻奢•悦藏”为主题的大赛已圆满结束,VOSS眼镜荣获:2023瑞丽轻奢品牌大赛「轻奢时尚风格奖」,作为眼镜行业唯一获此奖项的品牌,VOSS眼镜对此表示…

C++初阶入门之命名空间和缺省参数的详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.前言 二.命名空间 2.1命名冲突的例子 2.2解决方案 2.3命…

QT发生弹出警告窗口

QTC开发程序弹出警告窗口&#xff0c;如上图 实施代码&#xff1a; #include <QMessageBox> int main() {// 在发生错误的地方QMessageBox::critical(nullptr, "错误", "发生了一个错误&#xff0c;请检查您的操作。");}上面的文字可以更改&#x…