C语言的字符串复制

article/2025/9/30 4:28:04

提示:仅供参考,如有错误,还望指出。


目录

目录

一、字符串复制

二、一些优化

1.一次简单优化

2.二次优化

3.三次优化

4.四次优化

5.最后的优化

总结


前言

以下是对字符串复制的一些优化

一、字符串复制

 这是自己能想到的方法

主要思想:通过两个指针,对二者进行遍历,若该被复制的字符不为‘\0’来进行一一复制。

可是这样‘\0’字符就无法复制,而此时被复制字符的地址刚好又是‘\0’,再进行一次复制就好。

//我的字符串复制
void my_strcpy(char* dest,char* rsc)
{while (*rsc != '\0'){*dest = *rsc;dest++;rsc++;}*dest = *rsc;
}

二、一些优化

注:这些优化都是基于前一次的优化,也体现出一个循序渐进的过程

1.一次简单优化

这里实现了一小点的优化,也就是将三句语句合成一句

void my_strcpy(char* dest, char* rsc)
{while (*rsc != '\0'){*dest++ = *rsc++;}*dest = *rsc;
}

2.二次优化

这里实现了我们既可以赋值字符也能够复制'\0'

由于当被复制的字符为‘\0’时,也得到了复制,同时还跳出了循环

void my_strcpy(char* dest, char* rsc)
{while (*dest++ = *rsc++){;}
}

3.三次优化

这里优化了健壮性,可这里没有体现出问题在哪。

在二次优化中,添加了一个判断语句,只有二者同时不为空指针时,才会进入遍历复制的过程。

void my_strcpy(char* dest, char* rsc)
{if (dest != NULL && rsc != NULL){while (*dest++ = *rsc++){;}}
}

4.四次优化

这里用到了断言函数assert();同时需要添加<assert.h>该头文件

使用assert()函数,若不满足函数体中条件,就会报错,并且具体体现在哪一行,更有利于找错。

#include<assert.h>
my_strcpy(char* dest, char* rsc)
{assert(dest != NULL);assert(rsc != NULL);while (*dest++ = *rsc++){;}
}

5.最后的优化

这个就比较细节,也是为了防止一些错误而形成的优化。

在被复制字符中加上一个const,为了防止while循环中的条件,若不注意将二者位置调换,就会出现报错的情况。

这里也给大家推荐一个网站cplusplus.com - The C++ Resources Network 

若有不懂的函数或者函数需要的头文件都可以在这里查。         这里也到了strcpy函数中参数的类型,若以后要写类似于库函数的函数也可以考虑这里面的参数类型。

#include<assert.h>
void my_strcpy(char* dest, const char* rsc)
{assert(dest != NULL);assert(rsc != NULL);while (*dest++ = *rsc++){;}
}

总结

       在我看来,编程很像数学,每当你了解到一个题目的多种解法后,有些解法会给人一种十分奇妙的感觉,也有一种勾起好奇心的感觉,就是由于这种好奇心,促使这我们成长。不过有时候的编程也很乏味,但是我们一定要坚持。

学习不易,如果这篇对你有帮助,足矣。

最后附上学习的链接(同样要是有一起学习的伙伴就更好了)

25.VS环境-C语言实用调试技巧(2)(C语言程序设计教程谭浩强 c语言谭浩强视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程_哔哩哔哩_bilibili


http://chatgpt.dhexx.cn/article/3QuNeEAx.shtml

相关文章

不使用strcpy()函数实现字符串复制功能

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {/*不使用strcpy()函数实现字符串复制功能*/int i 0;char str1[100];char str2[100];printf("请输入字符串-> \n");gets(str1);while (str1[i] ! \0) /*判断字符数组的第一位不是结束符*/{st…

C语言字符串复制函数strcpy()的编写与详解

strcpy&#xff0c;即string copy&#xff08;字符串复制&#xff09;的缩写。 原型声明&#xff1a;char *strcpy(char *dest, const char *src); 头文件&#xff1a;#include <string.h> 和 #include <stdio.h> 功能&#xff1a;把从src地址开始且含有NULL结束符…

C语言函数库之字符串拷贝函数(string.h)

1.字符串拷贝函数strcpy 函数定义&#xff1a; char *strcpy(char *str1, const char *str2); 函数功能&#xff1a;把字符串str2(包括\0)拷贝到字符串str1当中&#xff0c;并返回str1。举例&#xff1a; #include<stdio.h> #include<string.h> int main(){char s…

【C/C++】C语言复制字符串及复制函数汇总(strcpy()/memcpy()/strncpy()/memmove())

目录: strcpy()举例&#xff1a; memcpy()举例&#xff1a; strncpy()举例&#xff1a; memmove()举例&#xff1a; 我们首先来考虑一个简单的问题&#xff0c;我们定义了一个字符串&#xff0c;然后想要复制这个字符串&#xff0c;在C语言中&#xff0c;我们可以用for循环和指…

C语言编写字符串拷贝(strcpy)函数详解以及assert函数

目录 一.strcpy函数 原型声明 功能 说明 代码及运行结果 二.自己编写strcpy函数 代码一及运行结果 代码二&#xff08;改进&#xff09;及运行结果 代码三&#xff08;进一步改进&#xff09;及assert函数 在这里解释一下什么是asser函数&#xff08;断言函数&#xff…

程序员一般通过什么平台接单

今天给大家介绍几个程序员可以接私活的平台。在外人眼中,程序员敲几行代码就能拿到不错的薪水,理所应当需要掌握与计算机方面相关的技术;私活没有那么好做,但是可以作为一个额外的收入渠道,或者想要找项目练手的程序员,都乐意利用自己的业余时间接私活。 1、程序员客栈 …

福利:总结10个Python赚钱的接单平台!兼职月入5000+

如果说当下什么编程语言最靠谱或者比较适合搞副业&#xff1f; 答案肯定100%是&#xff1a;Python Python是所有语法中最简单易上手的语言&#xff0c;不需要特别的的英语词汇量&#xff0c;逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据&#xff0c…

大一学生靠爬虫接单月入上万?这些接私活的外包平台分享给你!让你外包接到手软!

概叙 今天听一个同事说起他弟弟&#xff0c;同事他暑假教了两个月的python爬虫&#xff0c;也告诉他怎么接外包赚钱&#xff0c;本意是想他自己能在校给自己赚点生活费&#xff0c;不曾想到一月居然能赚这么多&#xff01;毕竟有了技术的话&#xff0c;除了工作上的&#xff0c…

程序员怎么接单赚外快,去这6个平台就可以了!

前言 说起程序员接外包的网站&#xff0c;你在网上一搜发现数不胜数&#xff0c;但真正有用的却很少。然后你想快速的找到几个靠谱的网站&#xff0c;去看了看接外包的攻略&#xff0c;你会发现排雷的又数不胜数。一时间你还真不知道要选哪一个。 接下来小编就为大家推荐几个…

福利:总结几个Python赚钱的接单平台,兼职月入5000+

如果说当下什么编程语言最靠谱或者比较适合搞副业&#xff1f; 答案肯定100%是&#xff1a;Python Python是所有语法中最简单易上手的语言&#xff0c;不需要特别的的英语词汇量&#xff0c;逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据&#xff0…

基于安卓的接的快接单平台/基于Android的快的接单平台

【摘要】 随着互联网的趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己的信息推广出去&#xff0c;最好方式就是建立自己的平台信息&#xff0c;并对其进行管理&#xff0c;随着现在智能手机的普及&#xff0c;人们对于智能手机里面的应用接的快接单平台也在不断的使用…

程序员的接单外卖平台

今天王同学给大家安利一款非常实用并且能接单的一款非常好的平台—— 独自开 独自开的功能非常之多 简直不要太香~ 集成第三方数学接口&#xff0c;形成标准化解决方案&#xff0c;提供开发者调用 支付分账功能电子签单功能税务接口硬件接口 独自开的开发功能简直不要太多~ 如…

效果图制作接单平台有哪些?

对于制图师来说&#xff0c;单子就是生命&#xff0c;就是白花花的票子&#xff0c;单子越多&#xff0c;票子越多。一般来说找单子不会是制图师来找&#xff0c;都是公司的商务拉来单子&#xff0c;制图师们只管出活&#xff0c;但如果想要更高的收入&#xff0c;想跳过层层转…

程序员接私活,接单平台

面向国内企业接单&#xff0c;主要好处就是对英语沟通能力的要求没那么高&#xff0c;不过客户屁事多&#xff0c;不懂装懂&#xff0c;需求来回改&#xff0c;喜欢瞎 bb&#xff0c;回款周期长的问题也普遍存在。 因此&#xff0c;我个人觉得&#xff0c;面向国内市场接单&am…

Java程序员接单平台推荐

Java程序员接单已经不再是新鲜事&#xff0c;也有不少学Java的兄弟通过接单得到了不错的收入&#xff1b;生活在二三线的程序员老铁们&#xff0c;靠接单也可以对等一线城市的收入。具体该怎么做&#xff0c;且听我娓娓道来。 (干货满满&#xff0c;建议大家点赞收藏&#xff…

常用Java接单平台一览

不少主攻Java的程序员兄弟除了工作&#xff0c;还会在空闲时间选择接单来增加自己的收入&#xff1b;对于那些生活在二三线的程序员兄弟们&#xff0c;通过接单&#xff0c;来获得与一线城市对等的收入。具体该怎么做&#xff0c;且听我娓娓道来。接下来干货满满&#xff0c;先…

那些你必须要知道的程序员接单平台

作为程序员来说&#xff0c;我们进行的大多数都可以在网络上进行&#xff0c;所以对于接单来说是非常方便的&#xff0c;起码你不需要千里迢迢跑到另外一个城市去进行一份兼职。所以说在闲暇时间动动手指&#xff0c;接几个单子增加点业余收入&#xff0c;也丰富一下自己的经验…

盘点六大程序员接单网站,务必收藏!

程序员接单不是啥新鲜事儿&#xff0c;不少程序员在工作之余会找一点单子来做&#xff0c;进而在二三线城市就拿到对标一线城市的薪资。 有的程序员会上论坛和一些接单群去找单子做&#xff0c;但是一般来说这种的工资会比较低&#xff0c;而且由于没有第三方的保障&#xff0c…

接单平台强烈推荐汇总

&#xff08;1&#xff09;程序员客栈 https://www.proginn.com/ &#xff08;10&#xff09;码市 https://codemart.com/ &#xff08;11&#xff09;猪八戒网 https://luoyang.zbj.com/ &#xff08;100&#xff09;开源众包 https://zb.oschina.net/ &#xff08;101&am…

服务器管理工具

文章目录 终端模拟&#xff08;Xshell 6&#xff09;安装配置 服务器文件传输&#xff08;WinSCP&#xff09;安装配置 终端模拟&#xff08;Xshell 6&#xff09; 安装 链接&#xff1a;https://pan.baidu.com/s/1aXPxtbpwxblfAwgdnQaZyQ 提取码&#xff1a;62qe 配置 新建…