去掉A处strcat与不去掉,s1的结果为什么不同? - 爱问答

(爱问答)

去掉A处strcat与不去掉,s1的结果为什么不同?

#include<stdio.h>

#include<string.h>

int main(void){

char s1[]="big ball",s2[]="small tree";

strcpy(s1,s2);

strcat(s2," and boy");//----------------A

puts(s1);

printf("%s ",s2);

return 0; 

 } 

-------------------------------------------

不去:

oy-----------s1

small tree and boy

 

--------------------------------

Process exited after 0.6545 seconds with return value 0

请按任意键继续. . .

去:

small tree------------s1

 

--------------------------------

Process exited after 0.5361 seconds with return value 0

请按任意键继续. . .


你的程序能运行只是幸运,因为下标溢出了

s1,字串长为8,实际空间为9个

而s2长度为10,实际空间为11个

strcpy(s1,s2); //s1无法容纳s2的内容

在C、C++中,下标溢出导致的结果是

“不可预见的”

所以,任何结果都是可能的,没有结果都是正常的

下一篇:头皮屑多,有什么办法

上一篇:想买眼镜框有什么推荐吗?

热门标签:
酒店 香港 青岛 厦门 济南 鸡蛋 完美 牛奶 火锅 东京 蛋糕 仓鼠 厨师 大理 牛肉 潍坊 烟台 海鲜 澳门 三亚 新加坡 临沂 丽江 故宫 西湖
最新更新:
上海拍摄场地出租? 想问一下车不常开需要换机油吗? 清晨开启车子尾气有蓝烟是烧机油了吗 肾虚会长白头发吗? 尖头钢笔怎么换笔头 如何才能真正的淡斑祛斑?有哪些平价好用的淡斑产品推荐? 304不锈钢编织金属软管怎么使用? 茂名特色小吃 薏仁、赤小豆、黑豆、花生、黄豆做豆浆可以吗? 斯图崖豆木是鸡翅木吗? GREEKFR-40G/(405A1)是什么系列的空调 海信液晶电视观看过程中屏幕变暗,重新开机后正常,但待会又变暗 为何液晶显示器能做到很轻薄 税务局的房子可以私自卖吗 长春377路公交今天运行吗