深圳国画老师招聘:〔C语言〕好奇怪哦

来源:百度文库 编辑:中科新闻网 时间:2024/05/03 06:02:41
#include"stdio.h"
main()
{

char a[]="I am a boy.",b[20];
int i;

for(i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i);
*(b+i)='\0';

for(i=0;b[i]!='\0';i++)
printf("%c",b[i]); /*为什么输出的是I am a boy.而后面*/
/*没有乱码里?*/
/*’\0’好象没输出哎 */

}
'\0'当然没办法显示!可如果不打印它字符串就无法结束呀...

没有输出\0,因为当b[i]==\0的时候,printf就不执行了。
这和字符串没关呀,你把b看成一个字符数组,而不是一个字符串,printf语句只是逐个逐个输出b里面的元素,只到b[i]为\0的时候就停止了。
也就是你在屏幕上看到的
I am a boy.是11个字符,而不是一个字符串。

for(i=0;b[i]!='\0';i++)
当b[i]='\0'的时候,循环打印就退出了,当然没有输出,其实就算有输出,你也看不出来因为'\0'是无法显示的.

用puts(b);就没有这个问题了