鱼C论坛

 找回密码
 立即注册
查看: 12672|回复: 17

[函数快查] strcpy -- 拷贝字符串

[复制链接]
发表于 2016-3-30 02:56:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
strcpy 函数文档


函数概要:

strcpy 函数用于拷贝字符串,包含最后的结束符 '\0'。

为了避免溢出,必须确保用于存放的数组长度足以容纳待拷贝的字符串(注意:长度需要包含结束符 '\0')。

源字符串和目标数组的位置不应该重叠。


函数原型:

  1. #include <string.h>
  2. ...
  3. char *strcpy(char *dest, const char *src);
复制代码


参数解析:

参数
含义
dest 指向用于存放字符串的目标数组
src 指向待拷贝的源字符串


返回值:

返回值是指向目标字符串的指针。


演示:

  1. #include <stdio.h>
  2. #include <string.h>

  3. int main()
  4. {
  5.         char str1[] = "Original String";
  6.         char str2[] = "New String";
  7.         char str3[100];

  8.         strcpy(str1, str2);
  9.         strcpy(str3, "Copy Successful");

  10.         printf("str1: %s\n", str1);
  11.         printf("str2: %s\n", str2);
  12.         printf("str3: %s\n", str3);

  13.         return 0;
  14. }
复制代码

搜狗截图20160330165901.png

版权归鱼C工作室(www.fishc.com)所有,转载请注明来源!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2016-3-30 05:14:50 | 显示全部楼层
半夜3点还更新。。。太不容易了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2016-3-30 17:01:59 | 显示全部楼层
拈花小仙 发表于 2016-3-30 05:14
半夜3点还更新。。。太不容易了

写了个标题,就睡着了~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2016-4-16 14:58:57 | 显示全部楼层
我有个疑问当strcpy(str2,str1),str2中发生越界 ,怎么输出时,str1的内容发生了改变?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2016-7-26 23:11:12 | 显示全部楼层
感觉可能捡到了什么神奇的编译器00~
交换了str1和str2的位置完全没事~改了str3的大小也完全没事~让它们输出sizeof还是那个比较小的数,但却能打印出更大的一串字母~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2017-1-17 14:36:09 | 显示全部楼层
不要经常熬夜    超过 11点 不睡 特别伤腑脏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2017-2-15 10:55:59 | 显示全部楼层
get it
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2017-8-17 13:29:24 | 显示全部楼层
喵已存在 发表于 2016-7-26 23:11
感觉可能捡到了什么神奇的编译器00~
交换了str1和str2的位置完全没事~改了str3的大小也完全没事~让它们输 ...

我也是,怎么搞都不出错。你找到原因了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2017-9-24 17:09:26 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2017-9-24 19:47:15 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2019-4-20 18:36:55 | 显示全部楼层
LG蓝色天空 发表于 2016-4-16 14:58
我有个疑问当strcpy(str2,str1),str2中发生越界 ,怎么输出时,str1的内容发生了改变?

因为栈的问题,你把str1和str2初始定义的时候顺序反过写来就发现不同的了(先写str2再写str1)。到后面栈的时候,你就明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2019-6-26 02:13:24 | 显示全部楼层
好东西,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2019-9-17 21:34:43 | 显示全部楼层
Vage 发表于 2019-4-20 18:36
因为栈的问题,你把str1和str2初始定义的时候顺序反过写来就发现不同的了(先写str2再写str1)。到后面栈 ...

Dev-c++改了以后还是一样的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2019-11-28 19:25:32 | 显示全部楼层
#include <stdio.h>
#include <string.h>

int main()
{
        char str1[] = "Original String";
        char str2[] = "New String";
        char str3[5];

        strcpy(str1, str2);
        strcpy(str3, "Copy Successful");

        printf("str1: %s\n", str1);
        printf("str2: %s\n", str2);
        printf("str3: %s\n", str3);

        return 0;
}
想问一下,当我把str3的数组长度改为5,再调用strcpy的时候,为什么没有出现溢出?道理不是应该和str1复制到str2里出现ring一样,都会溢出吗???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-3-1 11:59:47 | 显示全部楼层
学到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-3-5 14:31:22 | 显示全部楼层

请问解决了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-3-25 07:44:38 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2020-7-18 22:16:19 From FishC Mobile | 显示全部楼层
不会溢出啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2020-11-27 04:40

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表