C语言中字符数组的问题
#include<stdio.h>
void main()
{
char c[5]={'c','h','i','n','a'};
char b[6]={'c','h','i','n','a'};
puts(c);
puts(b);
}
定义的字符数组大于实际字符长度时,系统自动在末尾加上'\0',故puts(b)为china;
但为什么定义字符数组等于实际字符长度时,会在末尾多出一些乱码呢,数组c的长度不是5吗? C
[解决办法]
如果将上述程序中循环设置为
for(int i = 0; i < 12; i++) //正常应该是<5
也同样会出现相同的乱码。
因为输出了正常的字符数组c中之后的内容。
把内存中不可知的内容输出了。
这样讲应该可以理解了吧?
[解决办法]
字符数组无论多大。。都不会在后边加'\0'的。。只是你这里恰巧后边是一个'\0'而已。。第一句后边有乱码是因为puts是不管你数组大小的。。会一直输出一直到找到一个'\0'位置。。