字符函数和字符串函数(二)

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

1.strcpy

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

这个函数的功能是复制字符串

source指向的 C 字符串复制到指向destination的数组中,包括终止 \0 字符(并在该点处停止)。

为避免溢出,destination指向的数组的大小应足够长,以包含与source相同的 C 字符串(包括终止 \0 字符),并且不应在内存中与source重叠。

destination:指向要复制内容的目标数组的指针。

source:指向要复制的 C 字符串的指针。

返回值:返回 destination

注意事项:

1.源字符串必须以'\0'结束。
2.会将源字符串中的'\0'拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可修改。

5.strcpy会覆盖掉destination所指向的数组,但不会改变source所指向的数组

2.strcat

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

这个函数的功能是连接字符串

source指向的字符串的副本追加到destination指向的字符串。destination指向的字符串 中的终止 null (\0)字符被 source 指向的字符串的第一个字符覆盖,并且 null(\0) 字符包含在由 destination 指向的字符串 中两者的串联形成的新字符串的末尾。

destination:指向目标数组的指针,该数组应包含 C 字符串,并且应足够大以包含连接的结果字符串。

source:指向要追加的 C 字符串的指针。

返回值:返回 destination

1. 源字符串必须以'\0'结束。
2.目标字符串中也得有'\0',否则没办法知道追加从哪里开始。
3.目标空间必须有足够的大,能容纳下源字符串的内容。
4.目标空间必须可修改。

那么思考一下,strcat能否自己给自己追加呢?

是的,strcat函数的source和destination变量可以指向同一个字符串 。不过,这种做法通常不被推荐,因为它会导致字符串的自我连接,可能会产生意外的结果或导致程序错误。

strcat函数的设计目的是将源字符串(source)连接到目标字符串(destination)的末尾。如果source和destination指向同一个字符串,那么该字符串将会被自身连接,这可能导致字符串长度的无限增长,或者在循环过程中由于内存覆盖而导致程序崩溃。

总之,虽然技术上可以将source和destination设置为同一个字符串,但这不是strcat函数的预期使用方式,且可能带来程序逻辑上的问题。因此,建议始终使用不同的字符串作为source和destination。

3.strncpy

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

这个函数的功能是从字符串中复制字符

source指向的字符串的前 num 个字符复制到destination指向的字符串。如果在复制 num 个字符之前找到source指向的C 字符串的末尾(由 null (\0)字符表示),则 destination 指向的字符串将用\0填充,直到总共写入 num 个字符。

如果 source 的长度大于 num,则不会在目标末尾隐式追加 null 字符。因此,在这种情况下,destination 不应被视为以 null(\0) 结尾的 C 字符串(这样读取它会溢出)。

 source:要复制的 C 字符串。

destination:指向要复制内容的目标数组的指针。

num:

要追加的最大字符数。
size_t 是无符号整数类型。

返回值:返回 destination

简要概括:拷贝num个字符从源字符串到目标空间。
· 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加\0,直到num个。

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

这个函数的功能是从字符串追加字符

source指向的字符串的前 num 个字符追加到destination指向的字符串,外加一个终止 null 字符。

如果中 C 字符串的长度小于 num,则仅复制直到终止 null 字符的内容。

source:指向目标数组的指针,该数组应包含一个 C 字符串,并且应足够大以包含连接的结果字符串,包括额外的 null 字符。

destination:要追加的 C 字符串。

num:

要追加的最大字符数。
size_t 是无符号整数类型。

返回值:返回 destination

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

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

相关文章

华硕飞行堡垒键盘全部失灵【除电源键】

华硕飞行堡垒FX53VD键盘全部失灵【除电源键】 前言一、故障排查二、发现问题三、使用方法总结 前言 版本型号: 型号 ASUS FX53VD(华硕-飞行堡垒) 板号:GL553VD 故障情况描述: 键盘无法使用,键盘除开机键外…

轮式自主移动机器人的研究发展与ROS环境搭建

前言: 在轮式自主移动机器人的研发过程中,编程技术的重要性不言而喻。编程不仅涉及到机器人各种功能模块的协调运作,还决定了机器人能否实现复杂的行为决策和控制。首先,编程技术为机器人提供了“大脑”,从而使其能够感…

暑假请停止躺平!0门槛赚22万奖金!

在这个数字化时代,数据成为推动社会进步的重要力量。您是否想运用手中的数据,为治理与环保领域贡献力量?现在,机会就在眼前! 2024年厦门市大数据创新应用大赛正在火热进行中,我们诚邀全国高等院校在校学生…

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革,信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中,三防平板作为一种多功能的工作工具,正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板,顾名思义,是…

切换从 HTTP/1.1 到 HTTP/2

切换从 HTTP/1.1 到 HTTP/2 是一个显著的升级,能够带来更好的性能和效率。以下是切换过程中需要考虑和执行的步骤: 1. 服务器支持 确认服务器支持 HTTP/2:首先要确认你的 Web 服务器支持 HTTP/2。大多数现代服务器如 Nginx、Apache、IIS、C…

『 Linux 』利用UDP套接字实现简单群聊

文章目录 服务端通过传入命令处理实现远程命令执行使用Windows编辑UDP客户端实现Windows远程控制Linux接收套接字的其他信息UDP套接字简单群聊服务端UDP套接字简单群聊客户端运行测试及分离输入输出 参考代码 服务端通过传入命令处理实现远程命令执行 『 Linux 』利用UDP套接字…

springboot医疗远程管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…

el-table实现动态添加行,并且有父子级联动下拉框

<template><div><el-button click"addRow">添加行</el-button><el-table :data"tableData" style"width: 100%"><el-table-column label"序号"type"index"width"100"align"…

【ARM+Codesys 客户案例 】基于RK3568/A40i/STM32+CODESYS开发的控制器在自动输送分拣系统上的应用,支持定制

2021年“京东618” 累计下单金额超3438亿元,再次刷新纪录! 从下单到收货&#xff0c;各种货品均可在短短几天内通过四通八达的物流网络送达全国任何一个家庭。电子商务和快递物流的迅猛发展对仓储、分拣、配送效率和准确性均提出了更高的要求&#xff0c;加速了智能物流的发展。…

如何免费获取乡镇级边界数据geoJson数据

如何免费获取乡镇级边界数据geoJson数据 我们可以通过 阿里云数据可视化平台 &#xff0c;可以获取到中国各个省份/区级/县级的json数据&#xff0c;但是区级和县级&#xff0c;并没有包含街道和乡镇的数据 获取乡镇级边界数据 1.下载bigemap全能版 安装好后选择你要导出的…

C++竞赛初阶L1-13-第五单元-循环嵌套(29~30课)537: T456456 质因数分解

题目内容 已知正整数 n 是两个不同的质数的乘积&#xff0c;试求出较大的那个质数。 输入格式 输入只有一行&#xff0c;包含一个正整数 n&#xff08;6<n<109&#xff09;。 输出格式 输出只有一行&#xff0c;包含一个正整数 p&#xff0c;即较大的那个质数。 样例…

CC攻击导致服务器卡顿的技术解析

摘要 本文将深入探讨CC&#xff08;Challenge Collapsar&#xff09;攻击的工作原理以及它们如何导致服务器性能下降乃至卡顿。我们将通过一个简单的Python脚本模拟客户端行为来说明这一过程&#xff0c;并提供一些基本的缓解策略。 1. 引言 CC攻击是一种特定类型的DDoS攻击&…

《黑神话:悟空》媒体评分解禁 M站均分82

《黑神话&#xff1a;悟空》媒体评分现已解禁&#xff0c;截止发稿时&#xff0c;M站共有43家媒体评测&#xff0c;均分为82分。 部分媒体评测&#xff1a; God is a Geek 100&#xff1a; 毫无疑问&#xff0c;《黑神话&#xff1a;悟空》是今年最好的动作游戏之一&#xff…

ant design pro v6 如何做好角色管理

先上图&#xff1a; 整个角色管理是如何做的吗&#xff1f; 首先你要处理后端&#xff0c;要先把角色存到用户那。 这是用户管理部分的内容&#xff1a; 可以看到一个用户是有多个角色的。 看到没有&#xff0c;存的是数组 数组的是一个 role 对象 role 对象是这样&#xf…

在选择或推荐数据恢复软件之前,您如何测试和审查它?

数据恢复软件可以帮助您从各种存储设备中检索丢失或删除的文件&#xff0c;例如硬盘驱动器&#xff0c;USB闪存驱动器&#xff0c;存储卡或智能手机。但是&#xff0c;并非所有数据恢复软件都是一样的&#xff0c;根据您的情况和需求&#xff0c;有些软件的性能可能比其他软件更…

C语言--单链表基本定义

单链表是一种线性数据结构&#xff0c;由一组节点组成&#xff0c;每个节点包含数据部分和指向下一个节点的指针。链表的第一个节点称为头节点&#xff0c;最后一个节点指向NULL&#xff0c;表示链表的结束。 ### 常见用途 1. **动态数据存储**&#xff1a;适用于需要频繁插入…

如何在Linux上安装配置Kubernetes集群

在Linux上安装和配置Kubernetes集群是一个相对复杂的过程&#xff0c;但是可以通过一些步骤来实现。本文将介绍如何在Linux上安装和配置Kubernetes集群&#xff0c;包括安装和配置Master节点以及安装和配置Worker节点。 安装和配置Master节点&#xff1a; 第一步&#xff1a;…

网安入门—信息收集

1.定义 信息收集是指收集有关目标应用程序和系统的相关信息。这些信息可以帮助攻击者了解目标系统的架构、技术实现细节、运行环境、网络拓扑结构、安全措施等方面的信息&#xff0c;以便我们在后续的渗透过程更好的进行。 2.分类 主动信息收集和被动信息收集 区别&#xf…

微信公众号发送模板消息使用说明

一、获取access_token def get_access():appid secret url fhttps://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid{appid}&secret{secret}res requests.get(url).json()return res 返回结果如下&#xff1a; {access_token: 83_TAxuwdt…

android FD_SET_chk问题定位

android FD_SET_chk问题定位 一、FD报错二、问题定位2.1 APM定位2.2 adb定位2.3. 代码获取FD数 三、FD优化 一、FD报错 App在运行中记录报错如下&#xff0c;FD_SET&#xff0c;这个问题大概是文件描述符&#xff08;File Descriptor&#xff0c;简称FD&#xff09;超过了最大…