C语言strcat(a,c),字符串a的长度明显不够,为啥不出错?

要求不是足够大吗,为啥这也可以?求解!具体如图。

因为strcat函数是不安全的。虽然数组a的长度是4,但将c连接到a的后面时,不会进行越界检查,而是直接将c追加到a的后面。这样,就会占用不属于a的内存,所以运行程序时可能出现多种情况,比如:
1.
程序奔溃
2.
表现正常
3.
没奔溃,但程序出现莫名其妙的现象
这3种可能都有可能出现,出现2实属侥幸,说不定下次运行时就会出现情况1或3。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-29
strcat()函数执行是把字符串b连接到字符串a的后边,也就要求字符串a要足够长,能装下b,而你这样定义的字符串a和b都是字符串字面量,也叫着字符串常亮,很明显前边字符串长度是固定的4字节,不仅不够增加后边字符串长度而且还是不可修改的,所以运行一定出错,要是在linux下运行将产生一个段错误。修改可以把a定义成这个样子:char a[10] = "tom";追问

可,打印结果是对的~_~,没出错,为啥。我用visual studio 2010打C语言

本回答被网友采纳
相似回答