C语言初阶习题【25】strcpy的模拟实现

1. 首先先调用下库函数,看它实现了什么

在这里插入图片描述

2. 我们自己实现一个strcpy函数

在这里插入图片描述

3. 改进1

把*destnation++和source++
写上去,使用后置++
在这里插入图片描述

4. 改进2

这里直接把赋值操作放到了while的判断条件里面,然后while循环语句什么都不做,放了一个空语句(就是一个;)
判断流程是这样的
进入我们的函数之后,直接开始while语句
(1)执行while条件语言,直接将 * source的值赋值给 * destnation 只要这句语句不等于0就一直循环
(2)后置++ 然后一个一个把goodnight的值赋值过去,
(3)最后到‘\0’、相当于*destnation=‘\0’ 就是等于0,此时表达式为假
(4)所以while(表达式为假) 跳出循环 ,并且我们的’\0’也拷贝过去了 。

#define _CRT_SECURE_NO_WARNINGS 1
//模拟实现strlen 函数

#include<stdio.h>
#include<string.h>
void my_strcpy(char *destnation,char* source)
{
	while (*destnation++ = *source++)
	{
		;
	}
	
}
int main()
{
	char str1[10] = { 0 };
	char str2[] = "goodnight";
	my_strcpy(str1, str2);

	printf("%s", str1);
	return 0;
}

在这里插入图片描述
调试,可以在局部变量看,也可以在内存窗口看str1的变化。
在这里插入图片描述

5.改进3

加入assert

#include <assert.h>

void my_strcpy(char* dest, char* src)
{
	/*if (src == NULL || dest == NULL)
	{
		return;
	}*/

	//断言
	//assert中可以放一个表达式,表达式的结果如果为假,就报错,如果为真啥事都不发生
	//assert 其实在release版本中优化了
	/*assert(src != NULL);
	assert(dest != NULL);*/

	assert(dest && src);

	while (*dest++ = *src++)
	{
		;
	}
}

void my_strcpy(char* dest, char* src)
{
	assert(dest && src);//断言指针的有效性
	while (*dest++ = *src++)
	{
		;
	}
}

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

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

相关文章

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向

✅作者简介:双一流博士,人工智能领域学习者,深耕机器学习,交叉学科实践者。已发表SCI1/区top论文10+,授权专利4件,公开10+。可提供专利思路和指导,提供科研小工具,分享科研经验,欢迎交流! 📌个人主页: https://blog.csdn.net/allein_STR?spm=1011.2559.3001.5343…

某讯一面,有点难度

今天分享的是训练营的朋友在某讯外包的面经&#xff0c;他在面完后跟我说&#xff1a;数据一致性策略好久没问,有点忘了&#xff0c;所以这一块答的不太好。 我一直都会和大家强调复习的重要性&#xff0c;尤其是这种常见的问题。看看下面的问题你都能答得上来吗&#xff1f; …

汽车免拆诊断 | 2017 款东风风神 AX7 车热机后怠速不稳

故障现象 一辆2017款东风风神AX7车&#xff0c;搭载DFMA14T发动机&#xff0c;累计行驶里程约为13.7万km。该车冷起动后怠速运转正常&#xff0c;热机后怠速运转不稳&#xff0c;组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断  用故障检测仪检测&#xff0c;发动机控…

SSL 证书格式和证书文件扩展名:完整指南

SSL 证书是什么以及它如何工作相当容易理解。但当涉及到在服务器上安装它时&#xff0c;有时&#xff0c;你可能觉得这是在处理火箭科学。 由于有如此多的SSL 证书格式与特定服务器要求相关&#xff0c;您更有可能感到困惑和沮丧&#xff0c;而不是从一开始就正确配置证书。但…

在ubuntu22.04中使用bear命令追踪内核编译报错的原因分析和解决方案

1.说明 我在ubuntu22.04中使用bear命令追踪内核编译时发生如下报错&#xff1a; 如图&#xff0c;在链接名为libexec.so的动态库时发生错误 2 分析及解决过程 打印变量 LIB 发现其为空&#xff0c;也就是说 bear会去 /usr/bear/ 去找 libexec.so 去看一下 /usr/bear/是否存…

Day10——爬虫

爬虫概念 网络请求 爬虫分类 基本流程 请求头

nacos学习笔记(一)

1.前言 何为nacos&#xff0c;nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。可以说集注册中心&#xff0c;配置中心&#xff0c;服务管理于一起的平台。注册中心&#xff1a;相当于我们可以把服务注册到注册中心上&#xff0c;我们以后可以通过服…

机器学习周报-ModernTCN文献阅读

文章目录 摘要Abstract 0 提升有效感受野&#xff08;ERF&#xff09;1 相关知识1.1 标准卷积1.2 深度分离卷积&#xff08;Depthwise Convolution&#xff0c;DWConv&#xff09;1.3 逐点卷积&#xff08;Pointwise Convolution&#xff0c;PWConv&#xff09;1.4 组卷积(Grou…

WebRtc01: 课程导学、框架介绍

应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获

windows下编写的shell脚本在Linux下执行有问题解决方法

前言&#xff1a; 这个问题在实际工作中经常会遇到(非语法错误)&#xff0c;脚本来源有些是自己在windows系统编写的、有些是从别人那里copy来的&#xff0c;还有些原本是好的被别人拿到windows下修改了一些内容&#xff0c;总之各种场景&#xff0c;但是如果是一个内容比较多的…

开源CMS建站系统的安全优势有哪些?

近年来&#xff0c;用户们用开源CMS系统搭建网站的比例也越来越高&#xff0c;它为用户提供了便捷的网站建设解决方案。其中&#xff0c;亿坊CMS建站系统更因安全方面备受用户欢迎&#xff0c;下面带大家一起全面地了解一下。 一、什么是开源CMS&#xff1f; 开源CMS指的是那…

Windows系统安装Docker Desktop

文章目录 注意事项安装步骤官网下载软件安装到其它盘符操作(如果就想安装到C盘可以跳过这个步骤, 直接执行文件)等待出现软件安装界面Windows系统的配置软件的一些必要设置(以下设置需要点击apply才能生效&#xff0c;如果点不了&#xff0c;那就是安装后&#xff0c;出现了错误…

LLM 大语言模型学习记录

文章目录 1. 写在最前面2. 让 gpt-4o-mini 解释 LLM 的原理3. 让 gpt-4o-mini 解释 LLM 的使用场景4. 让 gpt-4o-mini 解释 LLM 的局限性5. 碎碎念 1. 写在最前面 大语言模型&#xff08;LLM&#xff09;似乎已经成为 AI 领域的宠儿&#xff0c;不少公司争相推出自研的大模型。…

(k8s)Flannel Error问题解决!

1.问题描述 书接上回&#xff0c;我们在解决kubectl不断重启的时候引入了Flannel 网络插件&#xff0c;但是一上来就报错&#xff0c; 2.问题解决 自己的思路&#xff1a;照例开始检查 1.先检查一下目前Flannel的pod kubectl get pods --all-namespaces 2.检查 Flannel的po…

科研绘图系列:R语言科研绘图之标记热图(heatmap)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息参考介绍 科研绘图系列:R语言科研绘图之标记热图(heatmap) 加载R包 library(tidyverse) library(ggplot2) library(reshape)…

xml格式化(1):使用python的xml库实现自闭合标签

前言 最近一段时间一直想要写一个urdf格式化插件。 至于为什么嘛&#xff0c;因为使用sw2urdf插件&#xff0c;导出的urdf&#xff0c;同一标签的内容&#xff0c;是跨行的&#xff0c;这就导致&#xff0c;内容比较乱&#xff0c;而且行数比较多。影响阅读。 因此&#xff…

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略&#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库&#xff0c;分机房部署&#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…

Unity 热更新基础知识

文章目录 1.一些名词2.三种编译方式3.Unity 两种脚本后端3.1 Mono3.2 IL2CPP3.3 对比 1.一些名词 IL&#xff08;Intermediate Language&#xff09;&#xff1a;中间语言&#xff08;类似于汇编代码&#xff09;CIL&#xff08;Common Intermediate Language&#xff09;&…

MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合

2024小结&#xff1a;在写作分享上&#xff0c;这里特别感谢CSDN社区提供平台&#xff0c;支持大家持续学习分享交流&#xff0c;共同进步。社区诚意满满的干货&#xff0c;让大家收获满满。 对我而言&#xff0c;珍惜每一篇投稿分享&#xff0c;每一篇内容字数大概6000字左右&…

解决SSH连接时遇到的“远程主机身份验证已更改 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)”警告

文章目录 引言警告信息解读造成原因解决方案 引言 在使用SSH协议进行远程服务器管理的过程中&#xff0c;可能会遇到这样的情况&#xff1a;当尝试通过SSH连接到某个远程主机时&#xff0c;终端突然弹出一条警告信息&#xff0c;提示“远程主机身份验证已更改”。 警告信息解…