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

news2024/9/19 10:53:32

  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不同的是它也是可以先限定前几个进行比较。

 

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

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

相关文章

如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用3. 本地访问DashDot服务4. 安装cpolar内网穿透5. 固定DashDot公网地址 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实时监测服务…

【Python】新手入门学习:详细介绍里氏替换原则(LSP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍里氏替换原则&#xff08;LSP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyT…

ArcGIS学习(十五)用地适宜性评价

ArcGIS学习(十五)用地适宜性评价 本任务给大家带来的内容是用地适宜性评价。 用地适宜性评价是大家在平时工作中最常接触到的分析场景之一。尤其是在国土空间规划的大背景下,用地适宜性评价变得越来越重要。 此外,我们之前的任务主要是使用矢量数据进行分析。本案例是主讲…

vs2022 错误(活动) E1696 无法打开 源 文件 “bits/stdc++.h“解决办法

一、创建stdc.h的头文件 随便找一个项目->添加->新建项->头文件->命名为stdc.h->添加 二、复制下述代码->保存 ​ // C includes used for precompiling -*- C -*-// Copyright (C) 2003-2017 Free Software Foundation, Inc. // // This file is part of …

镭雕机:如何利用激光技术实现高质量的产品标记

镭雕机是一种利用激光技术实现高质量产品标记的设备。它通过激光束在各种不同的物质表面进行精确的打标&#xff0c;可以产生永久性的标记效果&#xff0c;这些标记不仅精美&#xff0c;而且具有高度的精度和清晰度。以下是镭雕机如何利用激光技术实现高质量产品标记的详细过程…

java枚举与模拟方法

枚举 枚举的定义 枚举算法&#xff08;穷举算法&#xff09;&#xff0c;这种算法就是在解决实际问题的时候去使用所有的方式去解决这个问题&#xff0c;会通过推理去考虑事件发生的每一种可能性&#xff0c;最后推导出结果 优点 简单粗暴&#xff0c;他暴力的枚举所有可能&…

Unity之PUN实现多人联机射击游戏的优化

目录 &#x1f3ae;一、 跳跃&#xff0c;加速跑 &#x1f3ae;二、玩家自定义输入昵称 &#x1f345;2.1 给昵称赋值 &#x1f345;2.2 实现 &#x1f3ae;三、玩家昵称同步到房间列表 &#x1f345;3.1 获取全部玩家 &#x1f345;3.2 自定义Player中的字段 &#…

【代码随想录 | 数组 03】有序数组的平方

文章目录 3.有序数组的平方3.1题目3.2思路3.2.1暴力解法3.2.2双指针法 3.有序数组的平方 3.1题目 977.有序数组的平方——力扣题目链接 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示…

Python 3.6.6安装方法(保留环境中python2不受影响)

前言&#xff1a;因为Linux系统下自带了python2的版本&#xff0c;所以我们要用Python3的话需要自己构建安装。并保证某些已经存在的服务可以正常使用python2。 具体步骤如下&#xff1a; 一、python3.6.6 安装 1.安装依赖包&#xff1a; yum -y install zlib zlib-devel yu…

借助资本力量创业:企业扩张能力、融资方式及创投公司投资条款的考量

在创业的道路上&#xff0c;借助资本的力量是许多企业实现快速扩张和持续发展的重要途径。然而&#xff0c;如何有效利用资本&#xff0c;确保企业在扩张过程中稳健前行&#xff0c;就需要创业者对企业扩张能力、融资方式以及创投公司的投资条款进行深入理解和审慎考量。 一、企…

LeetCode28.找出字符串中第一个匹配项

28.找出字符串中第一个匹配项 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入…

QT 如何在QPushButton上播放gif(终极版)

在平时浏览网站&#xff0c;或者使用软件的时候&#xff0c;经常可以见到&#xff1a;在点击了某个按钮之后&#xff0c;按钮上会显示动图以及提示文字。在QT中&#xff0c;比较常见且简单的做法就是&#xff1a;给按钮设置一个layout&#xff0c;然后在这个layout里面添加QLab…

ListBox显示图片的一些问题

相关&#xff1a;http://t.csdnimg.cn/xTnu8 显示图片的方案就是&#xff1a;自定义一个Photo类&#xff0c;里面有属性Source&#xff1b;View再绑定ViewModel中的Photo集合&#xff0c;再到View中给ListView设置数据模板 关键点&#xff1a;这样做很容易忘记写数据模板 数据…

4款实用性前端动画特效分享(附在线演示)

分享4款非常不错的项目动画特效 其中有jQuery特效、canvas特效、CSS动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 全屏图片视差旋转切换特效 基于anime.js制作全屏响应式的图片元素布局&#xff0c;通过左…

docker部署在线音乐播放器

YesPlayMusic是一款高颜值的第三方网易云播放器 部署 下载镜像 docker pull fogforest/yesplaymusicdocker-compose部署 vim docker-compose.yaml version: 3 services:yesplaymusic:container_name: yesplaymusicimage: fogforest/yesplaymusicports:- 7950:80restart: a…

wxss和css的区别

目录 1. 语法差异 2. 尺寸单位 3. 样式导入 WXSS 示例代码&#xff1a; CSS 示例代码&#xff1a; 4. 组件和属性的支持 总结 WXSS (WeiXin Style Sheets) 和 CSS (Cascading Style Sheets) 都是用于描述文档样式的语言&#xff0c;但它们在微信小程序和网页开发中有一些…

数据结构从入门到精通——堆

堆 前言一、二叉树的顺序结构及实现 (堆&#xff09;1.1二叉树的顺序结构1.2堆的概念及结构 二、堆的练习题答案 三、堆的实现3.1堆向下调整算法3.2堆的创建3.3建堆时间复杂度3.4堆的插入3.5堆的删除3.6堆的代码实现 四、堆的具体实现代码Heap.hHeap.cTest.c堆的初始化堆的销毁…

二叉树相关题目

1.中序遍历和后序遍历构建二叉树&#xff1b; TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {//判空if(postorder.size() 0) return nullptr;//找到后序的最后元素就是根节点以及栈来存放数据auto rootnew TreeNode(postorder[post…

Hadoop大数据应用:Linux 部署 MapReduce 与 Yarn

目录 一、实验 1.环境 2.Linux 部署 MapReduce 3.Linux 部署 Yarn 4.Linux 调用大数据集群分析数据 二、问题 1.hadoop 的启动和停止命令 2.HDFS 使用命令 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xf…

基于单片机的指纹采集识别系统设计

目 录 摘 要 I Abstract II 引 言 3 1 硬件选择与设计 5 1.1 总体设计及方案选择 5 1.1.1主控单片机选择 5 1.1.2传感器模块选择 6 1.1.3显示器模块选择 6 1.2 系统总体设计 7 2 系统硬件电路设计 8 2.1 系统主电路设计 8 2.1.1 主体电路设计 8 2.1.2 单片机最小系统设计 8 2.…