小甲鱼 发表于 2016-3-30 02:56:08

strcpy -- 拷贝字符串

strcpy 函数文档

函数概要:

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

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

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


函数原型:

#include <string.h>
...
char *strcpy(char *dest, const char *src);

参数解析:


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


返回值:

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


演示:

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

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

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

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

      return 0;
}


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

拈花小仙 发表于 2016-3-30 05:14:50

半夜3点还更新。。。太不容易了

小甲鱼 发表于 2016-3-30 17:01:59

拈花小仙 发表于 2016-3-30 05:14
半夜3点还更新。。。太不容易了

{:5_100:}写了个标题,就睡着了~~~

LG蓝色天空 发表于 2016-4-16 14:58:57

我有个疑问当strcpy(str2,str1),str2中发生越界 ,怎么输出时,str1的内容发生了改变?

喵已存在 发表于 2016-7-26 23:11:12

感觉可能捡到了什么神奇的编译器00~
交换了str1和str2的位置完全没事~改了str3的大小也完全没事~让它们输出sizeof还是那个比较小的数,但却能打印出更大的一串字母~

Sboy 发表于 2017-1-17 14:36:09

不要经常熬夜    超过 11点 不睡 特别伤腑脏

mhp0114 发表于 2017-2-15 10:55:59

get it

点击刷新 发表于 2017-8-17 13:29:24

喵已存在 发表于 2016-7-26 23:11
感觉可能捡到了什么神奇的编译器00~
交换了str1和str2的位置完全没事~改了str3的大小也完全没事~让它们输 ...

我也是,怎么搞都不出错。你找到原因了吗

wushi 发表于 2017-9-24 17:09:26

谢谢

wushi 发表于 2017-9-24 19:47:15

谢谢

Vage 发表于 2019-4-20 18:36:55

LG蓝色天空 发表于 2016-4-16 14:58
我有个疑问当strcpy(str2,str1),str2中发生越界 ,怎么输出时,str1的内容发生了改变?

因为栈的问题,你把str1和str2初始定义的时候顺序反过写来就发现不同的了(先写str2再写str1)。到后面栈的时候,你就明白了。

Seawolf 发表于 2019-6-26 02:13:24

好东西,学习了

快快乐乐 发表于 2019-9-17 21:34:43

Vage 发表于 2019-4-20 18:36
因为栈的问题,你把str1和str2初始定义的时候顺序反过写来就发现不同的了(先写str2再写str1)。到后面栈 ...

Dev-c++改了以后还是一样的呀

nzr848704474 发表于 2019-11-28 19:25:32

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

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

      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一样,都会溢出吗???

Acacia 发表于 2020-3-1 11:59:47

学到

kjn1928 发表于 2020-3-5 14:31:22

nzr848704474 发表于 2019-11-28 19:25
#include
#include



请问解决了吗

200 发表于 2020-3-25 07:44:38

学习

入夜-常思 发表于 2020-7-18 22:16:19

不会溢出啊

lee2002 发表于 2020-12-14 11:17:41

看看答案

1140913594 发表于 2021-2-18 15:46:45

讲得好
页: [1] 2
查看完整版本: strcpy -- 拷贝字符串