char a[9] = {"123456789"};
数组长度为9,而且是字符数组还是字符串数组,要看你初始化赋值的方式,用""的说明是字符串,用''才是字符。
因此你申明了长度为9的长度,把字符串"123456789"赋值进去,但问题是编译器会最后在字符串尾补上'\0',但你赋值的内容已经超出可容纳的长度9,因此'\0'没有空间存放造成数组以字符串输出时溢出,直到在后面内存中读到0值或'\0'的内容,误认为结束为止。
所以解决办法是要么数组增加1位,要么初始值减少1位。
数组长度为9,而且是字符数组还是字符串数组,要看你初始化赋值的方式,用""的说明是字符串,用''才是字符。
因此你申明了长度为9的长度,把字符串"123456789"赋值进去,但问题是编译器会最后在字符串尾补上'\0',但你赋值的内容已经超出可容纳的长度9,因此'\0'没有空间存放造成数组以字符串输出时溢出,直到在后面内存中读到0值或'\0'的内容,误认为结束为止。
所以解决办法是要么数组增加1位,要么初始值减少1位。
[此贴子已经被作者于2018-2-2 13:15编辑过]