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

news2024/11/17 13:44:47

文章目录

  • 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.coloradmin.cn/o/1414866.html

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

相关文章

【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]

阅读导航 引言一、特殊类 --- 不能被拷贝的类1. C98方式:2. C11方式: 二、特殊类 --- 只能在堆上创建对象的类三、特殊类 --- 只能在栈上创建对象的类四、特殊类 --- 不能被继承的类1. C98方式2. C11方法 总结温馨提示 引言 在面向对象编程中&#xff0…

【计网·湖科大·思科】实验三 总线型以太网的特性、集线器和交换机的区别、交换机的自学习算法

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

kubeadm部署k8s1.27.2版本高可用集群(外部etcd集群带TLS认证)

文章目录 环境软件版本服务器系统初始化etcd 证书生成etcd集群部署负载均衡器部署部署k8s集群部署网络组件FAQ 环境 控制平面节点主机的配置最少是2C2G,否则kubeadm init的时候会报错 主机名IP组件系统os128192.168.177.128etcd、kubeadm、kube-apiserver、kube-controller-m…

Vue3 pinia全解(上)

pinia是什么? 如果你学过Vue2,那么你一定使用过Vuex。我们都知道Vuex在Vue2中主要充当状态管理的角色,所谓状态管理,简单来说就是一个存储数据的地方,存放在Vuex中的数据在各个组件中都能访问到,它是Vue生…

【学术论文写作 笔记02】 鲁棒性实验写作的行文逻辑

文章目录 一、声明二、行文思路三、示例范文一范文二 一、声明 自己总结的,有问题望指正! 二、行文思路 为什么要做鲁棒性测试怎么做实验结论对结果的解释 三、示例 PPT 范文一 2022, TIM, “A Robust and Reliable Point Cloud Recognition Netw…

Java零基础学习22:static关键字

编写博客目的:本系列博客均根据B站黑马程序员系列视频学习和编写目的在于记录自己的学习点滴,方便后续回忆和查找相关知识点,不足之处恳请各位有缘的朋友指正。 一、static的初步应用场景 我们开始时不使用static直接用public赋值&#xff…

租户认证系统中心设计与实践

租⼾认证中⼼设计、需求背景 1. 由于客⼾,租⼾之间缺乏严肃的关系,导致从经营⻆度看不清客⼾对于公司产品的真实使⽤情况,对于客⼾运营也造成⼀定影响。 2. 在各个业务产品中实际存在⼀些客⼾需要完善⾃⾝资料的场景,但这些场景收…

上位机图像处理和嵌入式模块部署(c/c++ opencv)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 opencv可以运行在多个平台上面,当然windows平台也不意外。目前来说,opencv使用已经非常方便了,如果不想自己编译…

ANSYS 2023 下载安装教程,附安装包和工具,轻松安装,无套路

前言 ANSYS是一款融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析(FEA)软件,能与多数计算机辅助设计软件接口,实现数据的共享和交换,如Creo,NASTRAN、Algor、IDEAS、AutoCAD等. 准备工作 1、Win10及以上系统 2、提前准备好…

Keepalived 深度解析:高可用性的精髓及实践指南

Keepalived 深度解析:高可用性的精髓及实践指南 Keepalived 深度解析:高可用性的精髓及实践指南Keepalived 的工作原理1. VRRP 协议概述2. Keepalived 的角色3. VRRP 协议详解 Keepalived 的使用指南1. 安装 Keepalived使用 Yum 安装本地安装方式 2. 配置…

电商系统设计到开发03 引入Kafka异步削峰

一、前言 系统设计:电商系统设计到开发01 第一版设计到编码-CSDN博客 接着上篇文章:电商系统设计到开发02 单机性能压测-CSDN博客 本篇为大制作,内容有点多,也比较干货,希望可以耐心看看 已经开发的代码&#xff0…

基于Python的全国主要城市天气数据可视化大屏系统

1 绪论 1.1 研究的目的与意义 近年来,气候变化引发全球范围内的关注。天气数据的采集和分析对于气候预测、生态环境保护等方面都起着至关重要的作用。同时,随着科技的不断发展,数据可视化已经成为了许多领域中不可或缺的一部分。基于此&…

外包干了9个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

解决 github.com port 443: Timed out 的问题

国内访问github.com总是那么不竟如人意,时而无法加载网页,时而等我们抽完了一根烟后,它还处于转圈的状态。 虽然国内有gitee.com等诸多的代码托管平台,但却鲜有国人愿意去呢?其中的缘由,想必也不用我多说&a…

机器学习 | 利用Pandas进入高级数据分析领域

目录 初识Pandas Pandas数据结构 基本数据操作 DataFrame运算 文件读取与存储 高级数据处理 初识Pandas Pandas是2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势&am…

system_server进程创建流程

system_server 进程是 Zygote 进程 fork 出的第一个进程,它负责管理和启动整个 Framework 层,下面附上android系统启动流程图: 记得上一篇Zygote进程创建里面提到过,forckSystemServer创建system_server进程。 /frameworks/base/…

nginx负载均衡-轮询

实验使用ubuntu做主机 1.安装nginx 安装依赖 sudo apt install libgd-dev 下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 解压nginx tar -zvxf nginx-1.22.1.tar.gz 编译安装 cd nginx-1.22.1 编译并指定安装位置,执行安装之后会创建指定…

鸿蒙APP的应用场景

鸿蒙APP可以用于多种场合和设备类型,这是鸿蒙系统的分布式能力和多终端适配的优势。以下是一些鸿蒙APP的应用场景,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.智能手机和平板电脑&am…

【听力与言语医学中心系列科普16】听力检查之纯音听阈测定

当我们去医院向医生诉说我们耳朵有问题时,最常听到医生说的是“去做个测听”吧,那么什么是测听?做测听有什么作用呢? 一、什么是纯音测听纯音听力测试自1943年Bunch教授发表后,就被作为首选的测听方法。纯音测听是测试…

一键轻松,免费创造:QuickQR带你体验AI二维码的轻松生成!

当今时代,将信息快速转变为可扫描图案,以简化人们的生活和工作方式,二维码技术展现了它强大的功能。特别是在分享链接、联系信息或进行支付时,二维码已成为现代社会一个不可或缺的部分。本文将探讨生成AI二维码的一种工具&#xf…