【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

相关内容

热门资讯

玩家终于实锤了!粤麻圈麻将有挂... 你好粤麻圈麻将这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】...
玩家终于实锤了!美酒之城有挂吗... 玩家终于实锤了!美酒之城有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)1、让任何用户在无需AI...
玩家终于实锤了!凯撒皇宫有挂吗... 自定义凯撒皇宫系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分...
玩家终于实锤了!福建十三道有挂... 您好,福建十三道这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785...
玩家终于实锤了!川南麻将有挂吗... 亲,川南麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,川南麻将的开挂软件,名...
玩家终于实锤了!嘉邻游戏有挂吗... 玩家终于实锤了!嘉邻游戏有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)是一款可以让一直输的玩家...
玩家终于实锤了!同城游牛鬼有挂... 玩家终于实锤了!同城游牛鬼有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)是一款可以让一直输的玩...
玩家终于实锤了!打两圈麻将有挂... 您好,打两圈麻将这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785...
玩家终于实锤了!歪歪有挂吗(分... 玩家终于实锤了!歪歪有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)是一款可以让一直输的玩家,快...
玩家终于实锤了!微乐云南麻将有... 你好微乐云南麻将这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785...
玩家终于实锤了!开心联盟有挂吗... 玩家终于实锤了!开心联盟有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)是一款可以让一直输的玩家...
玩家终于实锤了!聚兴茶馆有挂吗... 亲,聚兴茶馆这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,聚兴茶馆的开挂软件,名...
玩家终于实锤了!土豪赢三张有挂... 你好土豪赢三张这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】...
玩家终于实锤了!乐太坊有挂吗(... 玩家终于实锤了!乐太坊有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)1、让任何用户在无需AI插...
玩家终于实锤了!秋水佳人有挂吗... 你好秋水佳人这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】,...
玩家终于实锤了!桦南麻将有挂吗... 您好,桦南麻将这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785}...
玩家终于实锤了!聚友联盟有挂吗... 您好:聚友联盟确实真的有挂,软件请加QQ群客服咨询:1075075785确实是有挂的,很多玩家在这款...
玩家终于实锤了!哈狗游戏有挂吗... 你好哈狗游戏这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】,...
玩家终于实锤了!乐宝棋牌有挂吗... 自定义乐宝棋牌系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分...
玩家终于实锤了!老胡吧有挂吗(... 亲,老胡吧这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,老胡吧的开挂软件,名称叫...