C/C++中strcpy,strcat,strstr以及strncpy,strncat,strncmp的使用

  1、首先我们来介绍strcpy的使用从这个函数的名字来看它应该是属于字符串的拷贝,string copy。 那么这个函数是怎么用的呢?下面我么来介绍她的基本结构。

char * strcpy ( char * destination, const char * source );

 由上述可知它需要两部分 一个是目标字符和来源字符,顾名思义也就是把source中的字符或字符串拷贝进destination中,下面我们来介绍一个例子:

char arr1[20] = "dadsdasa";
char arr2[] = "aaaaa";
strcpy(arr1, arr2);
std::cout << arr1 << std::endl;

 大家不如猜一猜运行结果是什么?

也就是将爱arr2中的所有内容都拷贝到arr1中,但是这种拷贝是有条件的,如果arr1的空间不够大那么还能拷贝吗?显然是不能的如果空间不足够却仍然进行拷贝那么编译器会报错。

2、strcat的使用

    它的基本形式如下

char * strcat ( char * destination, const char * source );

      它的参数类型同strcpy完全一致,这个函数的作用为追加字符串也就是从目标字符串的’\0‘开始使source中的字符或字符串追加到destination中,通strcpy一样它也是有条件的,目标字符串空间必须足够否则编译器会报错

	char arr1[20] = "dasa";
	char arr2[] = "aaaaa";
	strcat(arr1, arr2);
	std::cout << arr1 << std::endl;

这段代码的运行结果就为:

 

     前两个函数都要求目标函数的空间必须足够大,这一点是非常容易理解的。

3、strstr函数

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

      这两种参数形式没有什么差别,它的如要作用为在str1中查找是否有str2字符串,也就是查找str1中是否有str2的一部分,如果有则返回str1中与str2中相同的字符串的第一个字符的地址,这里需要特别注意的是strstr函数真能返回从左往右第一个str1中和str2中的第一个字符的的值,如果str1中有多个str2那么值返回str1中第一个str2的首元素地址。

    下面我们来使用这个函数:

	char arr1[20] = "dqweqweq";
	char arr2[] = "we";
	char* ret = strstr(arr1, arr2);
	std::cout << ret << std::endl;

    这个程序的结果是:

 

 当然如果找不到那就返回空了。

    4、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 * str1, const char * str2, size_t num );

      通过查看这三个函数的参数我们可以知道他们比前三个函数多了一个参数 size_t  num;下面我们来简要介绍他们的使用:

   strncpy:它的作用依旧是字符串的拷贝,但不同的是他可以指定拷贝几个字符串。

   strnact:它的作用依旧是查找字符串,但是与strstr不同的是他可以限定从destination中前num个字符中查看是否有source;

   strncmp:它的作用依旧是比价字符串的大小,但与strcmp不同的是它也是可以先限定前几个进行比较。

 

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

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

相关文章

操作系统——进程

1.什么是进程 概念&#xff1a; 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动&#xff0c;是系统进行资源分配和调度的一个独立单位。 进程是程序的依次执行 进程是一个程序及其数据在处理机上顺序执行时所发生的活动 进程是程序在一个数据集合上运行的过…

[剪藏] - 由哇哈哈和农夫山泉所想到的

哇哈哈和农夫山泉的缠斗最近冒出来一个有趣的点&#xff1a;营销大于内容的胜利。 具体来说是这样的&#xff1a;农夫山泉很多年前做广告&#xff0c;说纯净水没有矿物质&#xff0c;长期喝是不利于人体健康的。农夫还做了个营销的对比实验&#xff0c;大概是用矿泉水养水仙花&…

CMDB在IT管理中的重要性

Configuration Management Database&#xff08;CMDB&#xff09;即配置管理数据库&#xff0c;在当前企业的IT运维管理中扮演着重要的角色。CMDB是一个包含了企业所有设备、软件和服务配置信息的中心数据库&#xff0c;通过有效地管理这些配置数据&#xff0c;能够为企业提供全…

AIX7.2下安装mysql5.1.73数据库

首先需要现在AIX版本的mysql安装包以及相关的依赖包 依赖关系deps文件下载地址&#xff1a; Index of /download/rpmdb/deplists/aix72 对应的rpm包下载地址&#xff1a; Index of /download/everything/RPMS 我们需要下载的mysql安装包主要有 mysql-5.1.73-1.ppc mysql…

WanAndroid(鸿蒙版)开发的第五篇

前言 DevEco Studio版本&#xff1a;4.0.0.600 WanAndroid的API链接&#xff1a;玩Android 开放API-玩Android - wanandroid.com 其他篇文章参考&#xff1a; 1、WanAndroid(鸿蒙版)开发的第一篇 2、WanAndroid(鸿蒙版)开发的第二篇 3、WanAndroid(鸿蒙版)开发的第三篇 …

SpringBoot(接受参数相关注解)

文章目录 1.基本介绍2.PathVariable 路径参数获取信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 3.RequestHeader 请求头获取信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 4.RequestParameter 请求获取参数信息1.代码实例…

PMP成绩判定标准是什么?

2024年3月10日的PMP考试已经结束&#xff0c;不知道大家考得怎么样&#xff0c;对于考试难度有没有值得分享或者吐槽的&#xff1f;可以发出来大家交流一下~ 一、3月PMP考试成绩什么时候出&#xff1f; 按照往期考试成绩发布时间&#xff0c;基本在考后6-8周会出成绩&#xf…

扩展资料主机名到IP地址的有两种方式:DNS

中国联通的DNS地址有两种。 主 DNS 为“210.21.4.130”&#xff0c;备用 DNS 为“221.5.88.88”。 每个 IP 地址可以有一个主机名。 主机名由一串或多串字符组成。 用小数点分隔字符串。 对于中国联通宽带用户&#xff0c;主DNS设置为&#xff1a;210.21.4.130&#xff0c;备用…

最好的五款骨传导耳机推荐,揭秘几大骨传导耳机选购技巧

骨传导耳机以健康听音的优势&#xff0c;近年来迅速赢得了市场的青睐&#xff0c;并成为蓝牙耳机领域的热门选择。随着其受欢迎程度的提升&#xff0c;市场上也出现了一些质量很差的产品&#xff0c;这些产品音质不佳、佩戴不舒适&#xff0c;甚至可能对用户的听力造成潜在风险…

Python实现BOA蝴蝶优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

权限管理系统-0.4.1

5.4 权限管理前端开发 5.4.1 src/components 新建ParentView文件夹&#xff0c;并在文件夹中新建index.vue文件。 并在index.vue中加入以下内容&#xff1a; <template><router-view /> </template>5.4.2 layout/components/Sidebar/index.vue routes() …

潜水耳机哪个牌子好?潜水党必看的游泳耳机专业性能详解!

在游泳、潜水等水上活动中&#xff0c;一个好的耳机可以让你更加享受水中的乐趣。而随着科技的不断发展&#xff0c;市面上涌现了越来越多的游泳耳机品牌和型号&#xff0c;让人眼花缭乱。 &#xff08;以下是之前测试过的游泳耳机&#xff1a;&#xff09; 那么&#xff0c;潜…

从零开始搭建医保购药APP:技术选择与开发流程

医保购药APP作为一种创新的医疗服务工具&#xff0c;为用户提供了便捷的医保购药流程&#xff0c;同时也为医疗机构提供了更高效的管理和服务方式。今天小编将为大家讲解如何从零开始搭建一款医保购药APP&#xff0c;包括技术选择和开发流程。 一、技术选择 在搭建医保购药APP…

python面向对象的三大特性:封装,继承,多态

1、面向对象有哪些特性 三种&#xff1a;封装性、继承性、多态性 2、Python中的封装 在Python代码中&#xff0c;封装有两层含义&#xff1a; ① 把现实世界中的主体中的属性和方法书写到类的里面的操作即为封装 ② 封装可以为属性和方法添加为私有权限&#xff0c;不能直…

【C++练级之路】【Lv.13】多态(你真的了解虚函数和虚函数表吗?)

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 一、虚函数与重写1.1 虚函数1.2 虚函数的重写1.3 重写的特例1.4 final和override&#xff08;C11&#xff09;1.…

【ROS+amcl+Movebase】多机器人导航

学过单机器人在已知地图中的导航后&#xff0c;想到如果有多个机器人在同一地图如何导航&#xff0c;于是在网上学习了下&#xff0c;主流方案即在单机器人导航的基础上引入命名空间。 参考文章1 参考文章2 参考文章3 一、实验环境 Ubuntu1804&#xff08;虚拟机&#xff09;…

VSCode+python单步调试库代码

VSCodepython单步调试库代码 随着VSCode版本迭代更新&#xff0c;在最新的1.87.x中&#xff0c;使用Python Debugger扩展进行调试时&#xff0c;扩展的justMyCode默认属性为true&#xff0c;不会进入库中的代码。这对debug而言不太方便&#xff0c;因此需要手动设置一下&#…

在vite(vue)项目中使用mockjs

在vite&#xff08;vue&#xff09;项目中使用mockjs 在开发环境使用 1、首先创建vite项目 yarn create vite选择vue&#xff0c;选择默认的js版本 2、进入项目文件夹中执行yarn安装依赖 yarn add axios mockjs vite-plugin-mock3、安装axios、mockjs及插件 yarn add axio…

【方法封装】时间格式化输出,获取请求设备和IP

目录 时间类 1.1 获取当前时间&#xff0c;以特定格式化形式输出 1.2 自定义时间&#xff0c;以特定格式化输出 1.3 获取当前时间&#xff0c;自定义格式化 1.4 自定义时间&#xff0c;自定义格式化 设备类 根据请求头信息&#xff0c;获取用户发起请求的设备 请求IP类 …

vue3中的文字滚动播报

vue3中的文字滚动播报 之前UI框架一直使用的elementPlus&#xff0c;有个需求&#xff0c;需要在页面上写个滚动播放新闻的功能&#xff0c;发现UI框架居然没有这个组件。花了一下午&#xff0c;在ChatGPT的帮助下&#xff0c;总算写成功了&#xff0c;先看最终展示效果 web页…