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)所有,转载请注明来源!
半夜3点还更新。。。太不容易了 拈花小仙 发表于 2016-3-30 05:14
半夜3点还更新。。。太不容易了
{:5_100:}写了个标题,就睡着了~~~ 我有个疑问当strcpy(str2,str1),str2中发生越界 ,怎么输出时,str1的内容发生了改变? 感觉可能捡到了什么神奇的编译器00~
交换了str1和str2的位置完全没事~改了str3的大小也完全没事~让它们输出sizeof还是那个比较小的数,但却能打印出更大的一串字母~ 不要经常熬夜 超过 11点 不睡 特别伤腑脏 get it 喵已存在 发表于 2016-7-26 23:11
感觉可能捡到了什么神奇的编译器00~
交换了str1和str2的位置完全没事~改了str3的大小也完全没事~让它们输 ...
我也是,怎么搞都不出错。你找到原因了吗 谢谢 谢谢 LG蓝色天空 发表于 2016-4-16 14:58
我有个疑问当strcpy(str2,str1),str2中发生越界 ,怎么输出时,str1的内容发生了改变?
因为栈的问题,你把str1和str2初始定义的时候顺序反过写来就发现不同的了(先写str2再写str1)。到后面栈的时候,你就明白了。 好东西,学习了 Vage 发表于 2019-4-20 18:36
因为栈的问题,你把str1和str2初始定义的时候顺序反过写来就发现不同的了(先写str2再写str1)。到后面栈 ...
Dev-c++改了以后还是一样的呀 #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一样,都会溢出吗??? 学到 nzr848704474 发表于 2019-11-28 19:25
#include
#include
请问解决了吗 学习 不会溢出啊 看看答案 讲得好
页:
[1]
2