C语言题,关于字符串常量后面的'\0'的。

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:51:43
void main(void)
{
char str2[4];
int i;
for(i=0; i<4; i++)
{
str2[i] = 'a';
}
for(i=0; i<4; i++)
{
printf("%c\n", str2[i]);
}
printf("%s\n",str2);
printf("\n");

getch();
}

为什么打出字符串str2的内容是 “aaaa”+ 一些乱码。 高人解释

这样的输出,原因在于你前面的赋值。你前面使用循环给字符串中的每个元素进行了赋值。这个字符串数组一共可以存放4个字符,你在这里也的确是赋值为aaaa,数组已经满了,没有存放一个字符串结束标志'\0',所以,你使用循环输出是没有问题的。但是,在使用字符串输出时,由于没有结束标志,所以输出时就不能正确的结束,这样就产生了前面的四个a和后面的乱码了。如果在前面有str2[3]='\0';这条语句,那么使用printf("%s\n",str2); 就没有问题了。

输出字符串的时候是一直遇到\0结束的,但是你的数组最后没有\0,所以输出aaaa以后就接着输出,知道遇到0,所以乱码。你把a[3]赋值\0试试

很赞同二楼的解释

二楼说的很好,赞

找不到结束罗