【C语言进阶:刨根究底字符串函数】 strcpy 函数
创始人
2024-06-03 20:54:33
0

本节重点内容:

  • 深入理解strcpy函数的使用
  • 学会strcpy函数的模拟实现

⚡strcpy

  • Copies the C string pointed by source into the array pointed by destination, including the
    terminating null character (and stopping at that point).
  • 源字符串必须以 '\0' 结束。
  • 会将源字符串中的 '\0' 拷贝到目标空间。
  • 目标空间必须足够大,以确保能存放源字符串。
  • 目标空间必须可变。

strcpy的基本使用:

#define _CRT_SECURE_NO_WARNINGS
#include 
#includeint main()
{char arr1[] = "abcdef";char arr2[20] = { 0 };strcpy(arr2, arr1);//将arr1的数据拷贝到arr2中printf("%s\n", arr2);return 0;
}

运行结果如下:

 下面来举几个相关的例子:

1. 源字符串必须以 '\0' 结束,否则无法进行正确拷贝。

#define _CRT_SECURE_NO_WARNINGS
#include 
#includeint main()
{char arr1[] = { 'a','b','c' };char arr2[20] = "xxxxxxxx";strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}
//此程序会崩溃

2. strcpy会将源字符串中的 '\0' 拷贝到目标空间。

#define _CRT_SECURE_NO_WARNINGS
#include 
#includeint main()
{char arr1[] = "abc\0def";char arr2[20] = "xxxxxxxx";strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}

代码运行结果如下:

 3. 目标空间必须足够大,以确保能存放源字符串。

#define _CRT_SECURE_NO_WARNINGS
#include 
#includeint main()
{char arr1[] = "abcdef";char arr2[3] = { 0 };strcpy(arr2, arr1);printf("%s\n", arr2);return 0;
}

 程序报错:

 4. 目标空间必须可以修改。

#define _CRT_SECURE_NO_WARNINGS
#include 
#includeint main()
{char* p = "abcdef"; //指针所指向的字符串为常量字符串,其内容不能被修改。char arr2[20] = "JX_BC";strcpy(p, arr2);printf("%s\n", arr2);return 0;
}
//该程序会崩溃

⚡模拟实现strcpy函数

#define _CRT_SECURE_NO_WARNINGS
#include 
#include//返回目标空间的起始位置
char* my_strcpy(char* dest, const char* src)//源头的数据不能发生变化,因此加上const进行保护
{char* start = dest;assert(dest && src);//断言保证两个指针有效while (*dest++ = *src++){;}return start;
}int main()
{char arr1[] = "abcdef";char arr2[20] = { 0 };my_strcpy(arr2, arr1);printf("%s\n", arr2);//printf("%s\n", my_strcpy(arr2, arr1));return 0;
}

代码运行结果如下:


感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。

98b76a6f4a9c4ca88fd93da1188ac6f9.gif

相关内容

热门资讯

fat32分区格式化后手工恢复... 哎呀,真是吓死我了!那天手一抖,竟然把我的宝贝FAT32分区给格式化了,里面的照片、文档、还有那些年...
北京第二医院体检中心:一次心灵... 嘿,朋友们,今天我要带你们走进一个充满神秘色彩的地方——北京第二医院体检中心!这不仅仅是一次普通的体...
书店整理书作文-书店整理书的特... 在这个快节奏的世界里,书店成了我心灵的避风港。每当我踏入这个充满墨香的空间,心中便涌起一股说不出的喜...
笔记本蓝屏代码0x000000... 哎呀,说到这个0x0000007a,我就一肚子火!你知道吗,每次我正沉浸在剧情高潮,或者快要完成那个...
基佬大乱斗手机版怎么玩-基佬大... 哟,各位小伙伴们,今天咱们来聊聊那个让人笑到肚子疼的游戏——基佬大乱斗手机版!这游戏简直就是把欢乐和...
gta5盗版mod安装教程-如... 嘿,兄弟们,今天咱们来点刺激的,聊聊怎么给咱们的GTA5装上那些酷炫的盗版Mod,让游戏体验直接飙升...
电脑蓝屏nvlddmkmsys... 哎呀,说到这个电脑蓝屏,真是让人头疼到爆炸!那天晚上,我正沉迷于我的游戏世界,突然之间,屏幕一黑,一...
easyrecovery注册码... 哎呀,最近是不是好多人都在找EasyRecovery的注册码啊?听说有免费的,是不是心里痒痒的,想赶...
cad安装后打不开怎么办-CA... 哎呀呀,真是气死我了!刚刚辛辛苦苦下载安装的CAD软件,满心欢喜地点开,结果呢?屏幕一闪,啥也没有了...
gtaiv缺少xlive.dl... 哎呀,天哪!我这刚准备热血沸腾地投入到GTAIV的街头火拼中,突然屏幕一黑,弹出来个讨厌的窗口:“缺...
双宽带叠加路由器:让网速快如火... 哎呀,说到这个双宽带叠加路由器,我简直是爱到不行!你知道吗,以前家里网速慢得像蜗牛爬,看个视频卡得我...
河南省公安厅电话 110:关键... 哎呀,说到这个河南省公安厅的电话啊,我这心里就五味杂陈的。你说,这年头,谁还没个需要找警察叔叔的时候...
电信新视通:改变生活的魔法,让... 亲爱的朋友们,今天我想和大家聊聊这个让人兴奋不已的“电信新视通”!这不仅仅是一个新名词,它简直就是现...
pq分区魔术师80 win7-... 哎呀,说到这个PQ分区魔术师80在Win7上的使用体验,我简直要激动得跳起来!你知道吗,我的电脑自从...
php ssleay32dll... 哎呀,今天咱们来聊聊那个让不少程序员头大的小东西——PHP里的ssleay32.dll文件!这个神秘...
怎样不提示丢失.dll-电脑丢... 哎呀呀,最近真是烦透了,总是听到那个“丢失.dll文件”的警告,简直就像是被小鬼缠上了,甩都甩不掉!...
mentohust 重启认证-... 哎呀,各位亲们,今天我可是遇到了个大麻烦!你们知道那个叫Mentohust的家伙吗?就是那个负责让我...
朝阳第二医院电话号码,找起来费... 哎呀,说到这个朝阳第二医院的电话号码,我真是又爱又恨!你知道吗,每次我有点小病小痛的,第一个念头就是...
联想g410重装系统步骤-联想... 嘿,大家好!今天我要带你们一起经历一次惊心动魄的联想G410重装系统之旅!别担心,我会用最接地气的方...
32位xp精简版系统下载-32... 嘿,各位电脑小白和怀旧大佬们,今天我要给大家带来一个超级炸裂的好消息!那就是32位XP精简版系统的下...