【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

相关内容

热门资讯

开源的鸿蒙系统和安卓系统,比较... 开源的鸿蒙系统与安卓系统:比较与探讨一、鸿蒙系统的起源与特点鸿蒙系统(HarmonyOS)是华为在2...
安卓系统怎么刷橘子系统,安卓系... 安卓系统刷橘子系统的详细教程一、准备工作在开始刷机之前,我们需要做好以下准备工作: 确保手机电量充...
安卓系统平板下onenote,... 安卓系统平板下OneNote的使用体验与同步技巧一、OneNote在安卓平板上的使用体验 界面简洁...
安卓系统传输照片电脑,安卓系统... 安卓系统手机照片传输到电脑的便捷方法随着智能手机的普及,我们越来越多地将生活点滴记录在手机中。照片作...
安卓系统是否值得升级,值得期待... 安卓系统升级:值得期待的创新与优化 安卓系统升级的重要性 一、安卓系统升级的必要性1. 系统优化与性...
安卓系统手机刷ios,操作指南... 安卓系统手机刷iOS系统:操作指南与注意事项一、安卓手机刷iOS系统的可行性理论上,安卓手机刷iOS...
怎么安装安卓系统版本,如何安装... 如何安装安卓系统版本——详细指南一、准备工作在开始安装安卓系统版本之前,请确保您已经做好了以下准备工...
安卓系统怎么装机教程,小白也能... 安卓系统装机教程:小白也能轻松上手随着智能手机的普及,安卓系统因其开放性和丰富的应用生态而受到广大用...
如何下载安卓系统9,全面指南 如何下载安卓系统9:全面指南一、了解安卓系统9.0在开始下载之前,我们先来了解一下安卓系统9.0的一...
安卓系统免费照片恢复,拯救丢失... 安卓系统免费照片恢复:拯救丢失的珍贵回忆在数字化时代,手机已成为我们生活中不可或缺的一部分。我们用手...
麒麟系统安卓教程视频,轻松上手... 麒麟系统安卓教程视频:轻松上手,畅享移动应用体验随着麒麟操作系统的不断发展和完善,越来越多的用户选择...
vivo手机安卓双系统 vivo手机安卓双系统:双倍体验,一机多用随着智能手机市场的不断发展,用户对于手机的需求也越来越多样...
小米5系统安卓6,体验与优化指... 小米5系统安卓6.0:体验与优化指南小米5作为小米品牌的一款经典手机,其搭载的安卓6.0系统(也称为...
车载ce导航安卓系统,体验与优... 车载CE导航系统升级至安卓系统:体验与优缺点分析一、车载CE导航系统升级至安卓系统的必要性1. 用户...
安卓全新操作系统,创新与变革的... 安卓全新操作系统:创新与变革的引领者一、安卓全新操作系统的特点1. 界面优化全新安卓操作系统在界面设...
安卓系统手机游戏养成,从新手到... 安卓系统手机游戏养成:从新手到高手的成长之路随着智能手机的普及,安卓系统手机游戏成为了人们休闲娱乐的...
安卓系统图标文件位置,安卓系统... 安卓系统图标文件位置详解随着智能手机的普及,安卓系统因其开放性和丰富的应用生态而受到广大用户的喜爱。...
苹果咋运行安卓系统,苹果设备运... 苹果设备运行安卓系统的可能性与挑战苹果设备运行安卓系统的技术基础虚拟化技术:实现苹果设备运行安卓系统...
妙小程安卓系统,专为儿童设计的... 妙小程安卓系统:专为儿童设计的启蒙教育神器一、妙小程安卓系统的简介妙小程安卓系统是一款针对3-8岁儿...
安卓系统怎么打开蓝牙,安卓系统... 安卓系统如何轻松打开蓝牙功能在安卓系统中,蓝牙功能是一种非常实用的无线通信技术,它允许您的设备与其他...