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

article/2025/9/30 5:50:29

strcpy,即string copy(字符串复制)的缩写。
原型声明:char *strcpy(char *dest, const char *src);
头文件:#include <string.h>#include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针(返回类型char*)。

不使用C/C++标准库函数,进行字符串复制函数的编写:

#include <stdio.h>
#include <malloc.h>
#include <assert.h>void stringcpy(char* to, const char* from) {assert(to != NULL && from != NULL);while (*from != '\0') {*to++ = *from++;}*to = '\0';
}int main(void) {char* t = (char*)malloc(15);char* f = (char*)malloc(15);stringcpy(f, "abcdefg");stringcpy(t, f);printf("%s\n", t);printf("%c\n", t[0]);free(t);free(f);getchar();return 0;
}

运行结果:
在这里插入图片描述
详解:
① assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。

*to++ = *from++先赋值再各自自增。
*p++先执行++再执行*,分三步(*++都是同级运算符,右结合)
(1)先执行p++,因为是后置,先用p
(2)再执行 *p, 取p所指的内容;
(3)最后再让p++,让p的地址加一个单位。
注意:++*p(*p)++都是取p所指对象的值加1。

*to = '\0'补上结束符,否则会乱码,如图。
在这里插入图片描述
char* t = (char*)malloc(15)使用 malloc 向堆动态申请内存;由于 malloc 返回类型为(void*),故用(char*)转换类型;char 为字符型变量,占1字节,此处申请了15字节的内存空间。
注意:若已不再使用,需要用 free 手动释放由 malloc 申请的内存,防止内存泄漏。

sizeof(t)的结果为4,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位),对于32位编译器,char*占4字节。

strlen(t)的结果为7,strlen() 截取'\0'之前的字符串长度,其头文件为<string.h>

getchar()类似于C++中的system("pause"),用于生成运行结果后暂停,方便查看结果,否则运行窗口会一闪而过,输入回车后即可关闭窗口。

参考自《程序员面试宝典(第5版)》


http://chatgpt.dhexx.cn/article/kYq6eAFv.shtml

相关文章

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 配置 新建…

世界上最好用的FTP服务器管理工具

1、服务器端&#xff1a;serv-u 2、客户端&#xff1a;FileZilla

云服务器管理

目录 使用云服务器的三大好处 什么是云服务器 一分钟快速定制ECS 三分钟便捷管理ECS 五分钟轻松运维ECS 运维场景一&#xff1a;使用ECS快照功能恢复误删的数据 运维场景二&#xff1a;性能监控、自动报警 云服务器使用的100种可能性 使用云服务器的三大好处 什么是云…