字符串相关函数【超详细】(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

函数使用例举

在这里插入图片描述

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

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

相关文章

SpringMVC使用步驟

1.导入依赖坐标 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!--这个依赖会跟tomcat插件有冲突&#xff0c;需要把有效范围设置为provided--><scop…

Spring Boot 中的自动配置(autoconfigure)

文中部分图片来源为 动力节点-王鹤老师的Spring Boot3.0 视频讲解中。 Spring Boot 中的自动配置&#xff08;autoconfigure&#xff09; 一、自动配置的原理二、关键注解和类1.EnableAutoConfiguration 注解2.Import 注解3.AutoConfigurationImportSelector 类4.AutoConfigura…

关于c++里string的底层存储布局

之前一直好奇&#xff0c;在c 字符串的长度是记录在什么地方的&#xff0c;今天写了个代码验证一下。 看&#xff0c;代码如下&#xff1a; // // Created by dlf on 2024/1/22. // // // Created by on 2024/1/11. // #include <iostream> #include <string>int…

外包干了2个多月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

微信小程序(十)表单组件(入门)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.type 属性指定表单类型 2.placeholder 属性指定输入框为空时的占位文字 源码&#xff1a; form.wxml <!-- 提前准备好的布局结构代码 --> <view class"register"><view class"…

ASP.NET Core NE8实现HTTP Upgrade和HTTP CONNECT代理服务器

看到一个文章[Go] 不到 100 行代码实现一个支持 CONNECT 动词的 HTTP 服务器 在NET8中如何实现 创建项目为MiniApi 编辑Program.cs文件。 var builder WebApplication.CreateSlimBuilder(args);var app builder.Build();// 将HTTP请求通过协议升级机制转为远程TCP请求&…

微信小程序如何自定义单选和多选

实现单选 实现效果&#xff1a;点击显示单选状态&#xff0c;每次仅能点击一个元素。 实现方式&#xff1a; wxml&#xff1a; <view wx:for"{{item_list}}" data-info"{{index}}" class"{{menu_indexindex?choose:no_choose}}" bind:ta…

实现低失调、低噪声的四路运算放大器MC33079DR2G与解决方案

MC33079DR2G是一款电源管理芯片&#xff0c;是优质单片运算放大器&#xff0c;采用具有创新高性能概念的双极技术&#xff0c;适用于优质音频和数据信号处理应用。结合了高频率 PNP 输入晶体管的使用&#xff0c;可产生具有低输入电压噪声和高增益带宽产品和摆率的放大器。所有…

MySQL的奇妙冒险:与数据跳华尔兹

引言&#xff1a;跳进MySQL的舞池 欢迎来到MySQL的世界&#xff0c;这里充满了表格、查询和一些奇妙的数据舞步。作为世界上最受欢迎的开源关系型数据库之一&#xff0c;MySQL就像是一个永远不睡觉的数据守护者。现在&#xff0c;让我们一起踏上这段轻松却充满学问的旅程&…

每日Linux(一)——man和help命令

man和help 引子man&#xff08;manual&#xff09;helphelp和man的区别内建命令 vs 外部命令内建命令 (Built-in Commands):外部命令 (External Commands):如何判断是内建命令和外部命令 再学习 引子 为什么要从man和help开始学习&#xff1f;因为这两个命令可以大大提升学者的…

羊奶与牛奶,谁更好?

羊奶与牛奶&#xff0c;谁更好&#xff1f; 羊奶和牛奶是我们日常饮食中常见的乳制品&#xff0c;但究竟哪种更好呢&#xff1f;今天就让小编羊大师带大家一起来探讨一下&#xff0c;看看羊奶和牛奶在各方面的优势和劣势&#xff0c;帮助你作出更明智的选择。 让我们从营养价…

生成三维模型时,OSGB、PLY、OBJ、S3MB这几种格式分别有什么不同?

OSGB是一种二进制存储&#xff0c;带有嵌入式链接纹理数据的倾斜摄影三维数据格式。此类数据文件碎&#xff0c;数量多&#xff0c;高级别金字塔文件大&#xff0c;难以实现不同地域、不同部门之间的数据共享&#xff1b; OBJ是一种标准三维模型文件格式&#xff0c;一般包括三…

前端开发_JavaScript之WebAPI

WebAPI作用和分类 作用: 就是使用 JS 去操作 html 和浏览器 分类&#xff1a;DOM (文档对象模型)、BOM&#xff08;浏览器对象模型&#xff09; DOM DOM&#xff08;Document Object Model——文档对象模型&#xff09;是用来呈现以及与任意 HTML 或 XML文档交互的API DOM…

【8.ADC模数转换器】蓝桥杯嵌入式一周拿奖速成系列

系列文章目录 蓝桥杯嵌入式系列文章目录(更多此系列文章可见) ADC模数转换器 系列文章目录一、STM32CUBEMX配置二、项目代码1.main.c --> ADCProcess 总结 一、STM32CUBEMX配置 STM32CUBEMX PB15 -> ADC2_IN15 ; PB12-> ADC1_IN11ADCProcess 二、项目代码 1.main.c …

Kotlin 协程库v1.7.1的核心模块(kotlinx-coroutines-core)-- kotlinx.coroutines.flow篇

Flow 是一种异步数据流的表示&#xff0c;可以用于处理异步数据流的操作。 AbstractFlow&#xff08;ExperimentalCoroutinesApi&#xff09; 协程库中的一个抽象类&#xff0c;用于创建具有状态的 Flow 实现。它跟踪了用于上下文保留的所有属性&#xff0c;并在任何属性被违…

C语言通过IXMLHTTPRequest以get或post方式发送http请求获取服务器文本或xml数据

做过网页设计的人应该都知道ajax。 Ajax即Asynchronous Javascript And XML&#xff08;异步的JavaScript和XML&#xff09;。使用Ajax的最大优点&#xff0c;就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作&#xff0c;并避免了在网络上发…

手撕重采样,考虑C的实现方式

一、参考文章&#xff1a; 重采样、上采样、下采样 - 知乎 (zhihu.com) 先直接给结论&#xff0c;正常重采样过程如下&#xff1a; 1、对于原采样率fs&#xff0c;需要重采样到fs1&#xff0c;一般fs和fs1都是整数哈&#xff0c;则先找fs和fs1的最小公倍数&#xff0c;设为m…

libjsoncpp 的编译和交叉编译

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

开通商家转账到零钱技巧

商家转账到零钱是什么&#xff1f; 通过商家转账到零钱这个功能&#xff0c;如果我们系统需要对用户支付费用&#xff0c;比如发放佣金、提成、退款之类的&#xff0c;可以直接转账到用户的微信零钱。 【商家转账到零钱】是【企业付款到零钱】的升级版&#xff0c;2022年5月1…

H264解码原理详解

H.264的编码原理参考文章H.264的编码原理 解码原理 解码器负责将符合H.264码流规范的压缩视频流解码&#xff0c;并进行图像重建。 根据如下图所示的解码器流图&#xff0c;我们可以看出基本的解码流程如下&#xff1a;解码器从网络提取层中接收压缩的比特流&#xff0c;经过…