标题:很有意思的strcpy
只看楼主
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
结帖率:100%
已结贴  问题点数:5 回复次数:13 
很有意思的strcpy
下面的小程序段我是在机顶盒软件里运行的,请大家在自己的平台上运行一下,看看结果
char *a;
char *b = "\n";
char s[10];
char a[] = "欢迎大家来尝试,一起进步一起学习,谢谢";
strcpy(s,a);
printf("%s\n%s\n",a,s);
不能输入中文的就随便写几个大于10的字符,你甚至可以把s[10]该成s[1]
我得运行结果是,无论a多长 s 多小,最后输出结果是输出两行一样的文字
搜索更多相关主题的帖子: strcpy 
2010-04-09 18:11
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
得分:0 
LZ给的程序很N,

离恨恰如春草,更行更远还生。
2010-04-09 19:05
one_june
Rank: 4
等 级:业余侠客
帖 子:139
专家分:212
注 册:2010-3-14
得分:0 
为什么把  char *b = "\n"; 注释掉
输出结果上面字符了长度变了...
2010-04-09 20:02
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
得分:0 
回复 3楼 one_june
呵呵,那个没用,因为那是我以前做切割时用的,现在不用了,去掉好了,
你应该发现了,定义的数组多长都可以赋值,但是我们一直是以为s只有10不可能接受那么多字符,
2010-04-10 19:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
呵呵~
2010-04-11 10:29
cyhysr
Rank: 2
等 级:论坛游民
帖 子:8
专家分:17
注 册:2009-2-25
得分:0 
也许和strcpy()函数的原型声明有关.
2010-04-11 19:19
ligt0610
Rank: 1
等 级:新手上路
帖 子:204
专家分:5
注 册:2006-6-29
得分:5 
LZ这样做很不安全的,很有可能覆盖其他内容,这也是在c++中不检查数组边界造成的,如果不清楚长度,建议还是用strncpy
当然输出的时候是以‘\0’为结束符,所以你看到整句话输出了

通过不断的学习与思考才是提高自己能力的最好途径。。。。。。。
2010-04-12 11:03
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
得分:0 
回复 7楼 ligt0610
谢谢,你说的我都明白,我知道越界会破坏别的数据,我只是做个实验,如果空间是连续分配的,我给s定义一个空间后紧接着有给a定一个空间,那它为什么没有破话a的数据呢,
2010-04-12 16:37
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
你试试这个:
程序代码:
char s[10];
char ss[10];
char a[] = "欢迎大家来尝试,一起进步一起学习,谢谢";
strcpy(s,a);
strcpy(ss,a);
printf("%s\n%s\n",s,ss);


不知道还是不是都一样。呵呵,其实我对你说的编程环境有点兴趣~
2010-04-14 09:49
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
得分:0 
回复 9楼 pangding
你回复我,我在哪能看到提示信息,收件箱没有,消息也没有。
多拷贝一次有什么区别么?你想要什么结果?如果是没有目的的乱试,我没兴趣。
你是对机顶盒有兴趣还是对我的服务器有兴趣,我们都是在服务器上运行编写的,我得电脑上没有Linux系统。
2010-04-14 10:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-302352-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.381106 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved