中易网

char s[] = "123456789"; char d[] = "123"; strcpy(d,s); printf("%s,\n%s"

答案:5  悬赏:70  
解决时间 2021-12-28 18:43
为什么在VS2008里输出的是123456789,123456789
最佳答案
不用管它,这个写法本来就不规范。
char s[] = "123456789"; // 长度为9
char d[] = "123"; // 长度为3
strcpy(d,s); // 溢出
printf("%s,\n%s",d,s); // 无法预料
全部回答
额 char d[]你定义一个具体长度试试
strcpy(d,s)是将s复制到d中 s数组的全部元素包括'\0'全部复制到d中 输出d当然就是123456789了
内存溢出问题所致,在VC6中,d地址:0x0012ff38,s地址:0x0012ff3c,两个挨在一起了。(vs2008可能不同,结果也不同) strcpy函数如下: char * strcpy(char * strDest,const char * strSrc) { if ((NULL==strDest) || (NULL==strSrc)) //[1] throw "Invalid argument(s)"; //[2] char * strDestCopy = strDest; //[3] while ((*strDestCopy++=*strSrc++)!='\0'); //[4] return strDest; }
你好! 缓冲区溢出,s有10个char大小,而d只有4个char大小,你把s复制到d中,就会出这种问题 strcpy函数不会根据你d的大小而截断s的长度,所以会把s中所有的字符全复制到以d为首地址的空间内 printf输出字符串的时候是不管分配给你空间的是多少的,从起始地址开始,直到遇到'\0'的所有字符他都会给你打出来的 我的回答你还满意吗~~
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
三只手表的英语怎么写
SEO工作如何?做SEO的前景如何?
团综是什么?
喜莱逢海景大酒店停车场地址在什么地方,想过
word为什么在某些字上自动有下划线
fire preventing开头的英语消防作文
柑马的意思是什么啊?请解释下!
丁字庫的意思是什么?丁字庫的释义是什么啊?
宝宝头上有一片白色的头皮,且长白发怎么回事
新疆二代身份证丢失加急需要多长时间
综典的意思是什么啊?请解释下!
媒質的意思是什么?媒質的释义是什么啊?
诺基亚N97用中国移动的卡能在日本使用吗
车是属于黄标车但是已经年检完了问一下能开吗
陪從的意思是什么?陪從的释义是什么啊?
推荐资讯
大家在写PHP代码时一般缩进多少
彫薄的意思是什么?彫薄的释义是什么啊?
睡觉总是打呼噜和枕头有关吗
内乡县工商行政管理局夏馆工商所地址在哪,我
稠树塘居委会地址有知道的么?有点事想过去!
谀导的意思是什么啊?请解释下!
帷宫的意思是什么?帷宫的释义是什么啊?
一直没怀孕怎么办?
关于玩游戏的利与不利,英语作文,求作文,谢
养视的意思是什么啊?请解释下!
踢键儿的意思是什么?踢键儿的释义是什么啊?
日珠的意思是什么啊?请解释下!
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?