C语言中strcpy函数的实现

C语言中strcpy函数的实现

为了便于和strcpy函数区别,以下命令为_strcpy。

描述:实现strcpy,字符串拷贝函数,函数原型如下:

char* strcpy(char* _Destination, const char *_Source);

_strcpy实现:

char* _strcpy(char* _Destination, const char* _Source)
{assert(_Destination != NULL && _Source != NULL);char* p = _Destination;while ((*p++ = *_Source++) != '\0');return _Destination;
}

_strcpy测试示例(C++测试):

#include <iostream>
#include<assert.h>
using namespace std;
char* _strcpy(char* _Destination, const char* _Source)
{assert(_Destination != NULL && _Source != NULL);char* p = _Destination;while ((*p++ = *_Source++) != '\0');return _Destination;
}
int main()
{const char* str = "Hello World";char strArr[100] = "";char* newStr = strArr;_strcpy(newStr, str);cout << newStr;return 0;
}

运行结果:

在这里插入图片描述

代码分析:

char* _strcpy(char* _Destination, const char* _Source)
{assert(_Destination != NULL && _Source != NULL);char* p = _Destination;while ((*p++ = *_Source++) != '\0');return _Destination;
}

        这个函数使用了断言(assert)来确保传入的指针参数 _Destination 和 _Source 都不为 NULL。
        接下来,定义了一个指针变量 p,将其初始化为 _Destination,用于指向目标字符串的当前位置。
        然后,使用 while 循环来将 _Source 中的字符逐个复制到 _Destination 中,直到遇到字符串结尾的空字符 ‘\0’。
        最后,返回指向目标字符串的指针 _Destination。
        这段代码实现了字符串的复制功能,将 _Source 中的字符逐个复制到 _Destination 中,并确保传入的指针参数不为 NULL。这样做可以避免在复制过程中出现空指针引起的错误。
        注意:这段代码中使用的断言(assert)是一种在开发和调试过程中常用的技术,用于验证假设和捕捉意外条件。在发布版本中,通常会禁用断言(assert)机制,以避免与断言相关的性能开销。此外,C++ 标准库中也提供了更为安全和高效的字符串复制函数,如 strcpy_s。

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

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

相关文章

指针 基础知识

本笔记为观看56 指针-指针的定义和使用_哔哩哔哩_bilibili后的学习笔记 指针的定义和使用 1、定义指针 int main () {//1、定义指针int a 10;//指针定义的语法&#xff1a; 数据类型 * 指针变量名&#xff1b;int * p;//让指针记录变量a的地址p &a; //& 为取址符cou…

学习Python的第四天

使用工具 PyCharm Community Edition 2023.3.4 使用环境 Python3.10.4 目录 1.字面量 1.1 值的类型 1.2 字面量的写法 2.注释 2.1 注释的作用 2.2 单行注释 2.2.1 语法 2.3 多行注释 2.3.1 语法 2.3.2 一般用来解释 2.4 注释示例 2.4.1 运行结果 3.变量 3.1…

【轻松一刻】中国茶叶探索奇妙之旅

文章目录 茶多酚 茶叶大类 龙井茶 泡茶方法 茶叶保存 参考资料 茶多酚 茶多酚是形成茶叶色香味的主要成份之一&#xff0c;也是茶叶中有保健功能的主要成份之一。茶多酚的副产品咖啡因&#xff0c;又称为咖啡碱&#xff0c;能兴奋大脑皮层&#xff0c;所以喝茶有提神作用…

【单片机】PMS5003,PM2.5传感器数据读取处理

文章目录 传感器介绍数据处理解析pm2.5的代码帮助、问询 传感器介绍 PMS5003是一款基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集 并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而 换算成为质量浓度,并以通用数字接口形式输出。本传感器可…

ES学习日记(八)-------ik安装和简易使用

一、下载和安装 https://github.com/infinilabs/analysis-ik.git 网络不好可以用这个地址,注意:ik版本要和es版本保持一致 现成地址 注意es用户操作或给es用户权限 plugins新建ik文件夹,并把压缩包解压到ik unzip elasticsearch-analysis-ik-7.4.2.zip /bin目录启动es: 二…

MySql并发事务问题

事务 事务概念&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff1a;ACID&#xff1a; 小…

【HTML】CSS样式(二)

上一篇我们学习了CSS基本样式和选择器&#xff0c;相信大家对于样式的使用有了初步认知。 本篇我们继续来学习CSS中的扩展选择器及CSS继承性&#xff0c;如何使用这些扩展选择器更好的帮助我们美化页面。 下一篇我们将会学习CSS中常用的属性。 喜欢的 【点赞】【关注】【收藏】…

【SCI绘图】【曲线图系列1 python】绘制扫描点平滑曲线图

SCI&#xff0c;CCF&#xff0c;EI及核心期刊绘图宝典&#xff0c;爆款持续更新&#xff0c;助力科研&#xff01; 本期分享&#xff1a; 【SCI绘图】【曲线图1 python】绘制扫描点平滑曲线图 1.环境准备 python 3 import numpy as np import pandas as pd import proplot …

面试算法-139-盛最多水的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。…

电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

批量调节音频速度是现代音频处理中的一个重要环节&#xff0c;尤其在音乐制作、电影剪辑、有声书制作等领域&#xff0c;它能够帮助制作者快速高效地调整音频的播放速度&#xff0c;从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项&#xff0c;…

ES6中模块化详解

一个兜兜转转&#xff0c;从“北深”回到三线城市的小码农&#xff0c;热爱生活&#xff0c;热爱技术&#xff0c;在这里和大家分享一个技术人员的点点滴滴。欢迎大家关注我的微信公众号&#xff1a;果冻想 前言 因为ES6中的模块化是将来&#xff0c;所以就必须有必要好好的了…

机器学习数据预处理—统计分析方法

数据预处理 1 数据规范化 量纲&#xff0c;指将一个物理导出量用若干基本量的乘方之积表示出来的表达式。数据的比较需要关注两点——绝对数值和量纲&#xff0c;而特征间因为量纲的存在导致无法直接通过绝对数值比较大小&#xff0c;也就无法判断特征间的重要性。例如若某个…