strcpy的模拟实现

news2024/11/18 10:49:41

strcpy函数的定义:

strcpy函数功能的解释:

会将源字符串中的 内容包括'\0' 拷贝到目标数组,所以源字符串必须以 '\0' 结束。
返回值为拷贝完成后的目标数组的首地址。
Const 是因为源字符串的内容不需要被修改,所以const最好。
strcpy函数的演示:

 

arr1数组的内容前后变化:

拷贝前:

 

拷贝后:

结果展示:

 

strcpy的模拟实现:(容易理解的版本)

理解要点:

1,模拟函数的定义要按照strcpy的函数定义来。

2,因为strcpy返回值为拷贝后的目的数组的首地址,所以在这里进行一次首地址的保留,因为之后首地址会改变(char* start = dest;)

3,源字符串第一个元素不是 \0 ,就进入循环,然后进行赋值,赋值完成后,地址双双往后移。

4,进行最后一步 \0 的赋值。

strcpy的模拟实现:(最简单且严谨的版本)

优点:

1,断言语句起到严谨的作用,先判断是不是空指针在考虑是否进入下一步。

2,while语句先进行赋值(不管是不是\0,因为\0也需要赋值),然后判断赋值的结果是不是\0,因为\0 的ascll码值就是0(如果是的话,已经把\0赋值成功了,并且退出循环),然后进行后置的++,一气呵成。

3,循环体为一个空语句即可。

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

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

相关文章

程序员的三重境界:码农,高级码农、程序员!

见字如面,我是军哥! 掐指一算,我在 IT 行业摸爬滚打 19 年了,见过的程序员至少大好几千,然后真正能称上程序员不到 10% ,绝大部分都是高级码农而已。 今天和你聊聊程序员的三个境界的差异,文章不…

【DL经典回顾】激活函数大汇总列表(持续更新中...)

激活函数大汇总列表(持续更新中…) 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里,激活函数扮演着不可或缺的角色,它们决定着神经元的输出,并且影响着网络的学习能力与表现力…

Redirect相应重定向无法访问WEB-INF下的静态资源,可以跳到外部资源(比如www.baidu.com)

相应重定向无法访问WEB-INF目录下静态资源,WEB-INF目录下静态资源受保护。 访问外部资源 访问Servlet5.do,就跳到百度页面

14、Linux-Shell03:echo、printf和test命令

一、echo echo用于输出字符串 值得关注的地方 1、转义字符\。例如,echo "\"Hello,World\" is a classic sentence for programmer"。 2、read命令用于读取一行的输入,echo可以对输入进行输出 3、\n换行,\c不换行。需…

C编程基础四十分笔记

都是一些基础的C语言 一 输入一个整数,计算这个整数有几位二 编写程序计算一个分布函数三 输入一个字符串,再随便输入一个字母,判断这个字母出现几次四 求 1到10的阶乘之和五 求一个球体体积六 写一个链表,存1,2&#…

网络安全等级测评师考试培训可以参考哪些资料?

网络安全是国家安全的重要组成部分,也是企业安全的重中之重;而网络安全等级测评师则是守护这一安全领域的重要力量。所以专业的网络安全等级测评师是非常重要。作为专业的网络安全等保测评师,他们肩负着对信息系统进行安全评估、发现潜在风险…

系列五十六、如何下载历史版本的Maven?

一、如何下载历史版本的Maven? 1、Maven官网 https://maven.apache.org/download.cgi2、找到Other Releases选项# Maven 3 archives对应的链接url 3、https://archive.apache.org/dist/maven/maven-3/

【Swing】Java Swing实现省市区选择编辑器

【Swing】Java Swing实现省市区选择编辑器 1.需求描述2.需求实现3.效果展示 系统:Win10 JDK:1.8.0_351 IDEA:2022.3.3 1.需求描述 在公司的一个 Swing 的项目上需要实现一个选择省市区的编辑器,这还是第一次做这种编辑器&#xf…

python--类与面向对象-2

一、对象在文本中的输出 class Person: def __init__(self,name,agg,live_value,money): self.namename self.aggagg self.live_valuelive_value self.moneymoney def describe(): print(%s的攻击力是%s%(self.name,self.agg)) pPerson(bob,10,10000,100) bPerson(tony,…

Python之装饰器

一:作用 在函数名以及函数体不改变的前提下,给一个函数附加一些额外代码 二、语法 三、举例子 两个功能函数 test1, test2 遵循 “开放封闭原则”, 已经写好的代码,尽可能不要修改。 如果想要新增功能,…

YOLOv5目标检测学习(5):源码解析之:推理部分dectet.py

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、导入相关包与路径、模块配置1.1 导入相关的python包1.2 获取当前文件的相对路径1.3 加载自定义模块1.4 总结 二、执行主体的main函数所以执行推理代码&…

Linux中YUM仓库的配置

Linux软件包的管理 YUM仓库是什么YUM的常用命令修改YUM源其实CentOS7已经对YUM做了优化 YUM仓库是什么 之前传统RPM的管理方式 可以简单理解为写Java的时候不用Maven管理 jar包都要自己手动去导入 去下载 但是配置好YUM仓库 就放佛在用Maven管理Java项目 基于RPM包管理 能够从…

temu英国电商市场洞察:2月份商品销售数据分析Python数据采集Api

文章目录 引言可视化分析数据展示商品类目占比分析销售额分析价格区间占比分析各类目新品占比分析 写在最后 引言 在美国市场稳步增长基础上,Temu也不断加快全球步伐,现已进入47个国家,光23年9月份就进驻了10个国家,创造单月扩张国…

Redis底层数据结构之Hash

文章目录 1. Redis底层hash编码格式2. Redis 6源码分析3. Redis 7源码分析 1. Redis底层hash编码格式 在redis6中hash的编码格式分别是ziplist(压缩列表)和hashtable,但在redis7中hash的编码格式变为了listpack(紧凑列表&#xf…

HADOOP完全分布式搭建(饭制版)

HADOOP完全分布式搭建(饭制版) 1.虚拟机安装 安装系统 点击VMware Workstation左上角文件,新建虚拟机 选择自定义,点击下一步 点击下一步 选择稍后安装操作系统(后续我们使用的操作系统为CentOS7),点击…

解决vue2+elementUI的下拉框出现自动校验的问题

问题: 总结原因是因为新增的时候,传了空值进去 可以这样子解决 this.formData.value && this.$set(this.model, this.formData.key, this.formData.value)这种是只有值存在的时候才会给他赋值,但是这只解决单选下拉框,…

SQLiteC/C++接口详细介绍之sqlite3类(五)

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(四) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(六)(未发表) 14.sqlite3_busy_handle…

【STL】string各种函数的应用

1.string 基本赋值操作 string assign(string str,int n) string assign(string str,int pos,int n) 2.string存取字符操作 (at()) 注意:[ ]越界不会抛出异常,at越界会抛出异常 3.string拼接…

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型1

文章灵感来源于MATLAB官方免费教程:HDL Coder Self-Guided Tutorial 考虑到MATLAB官网的英文看着慢,再加上视频讲解老印浓浓的咖喱味,我决定记录利用MATLAB&Simulink&SystemGenerator进行FPGA数字信号处理的学习过程。 在进行数字信…

vue学习笔记24-组件事件配合v-model使用

搜索时v-model绑定的search数据时时发生变化 watch侦听器时时监察变化&#xff0c;一旦数据发生变化 &#xff0c;就实时发送数据给父组件 子组件的完整代码&#xff1a; <template>搜索&#xff1a;<input type"text" v-model"search"> <…