问个简单的c语言问题,其中b[5]=0;不是把0复制给b[5]了吗怎么还会输出HELLO呢?在线等,在先谢谢la !

void main( )
{
char b[]=”Hello you”;
b[5]=0;
printf(“%s\n”,b);
}
谢谢大家了,都说的有道理,不知道给谁好!我也就随便给个了。呵呵!

你把b[5]赋值为0,其实就是char数组的第六个位置赋值为'\0','\0'在C语言中是字符串的末尾,意味着字符串的结束,因此你在b[5]=0之后,你的字符串就在hello的后面那个空格的时候结束了,其实就是你把原来的空格字符换成了结束字符,将字符串提前结束了,而至于还有hello是因为你的赋值是在b[5]位置,也就是数组的第六个元素的位置,而不是开头,如果你想要都不要的话,那么应该是b[0]=0
不信你自己改改代码一试就知道了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-10
字符串是以0为结束符的
char b[]="Hello you";这个字符串实际上在你看不见的后面还有一个字符的结束符'\0',ASCII值为0
所以b[5]=0以后实际上载Hello的那个字符就是'\0'了,b数组指向的就是"Hello\0you"
printf("%s\n", b);实际在输出时遇到'\0'就结束了
第2个回答  2011-06-10
b[0]=H;b[1]=e;b[2]=l;b[3]=l;b[4]=o;b[5]=0;
字符串中是以\0作为结束标识的。所以后面的you不见了。
第3个回答  2011-06-10
字符串用'\0'也就是整数0标识结束,
b[5]=0;
之后,打印时只打印到b[4]
第4个回答  2011-06-10
b[5]是‘O'后面的空格;
字符串以0结束
相似回答