amazingj微博:一道简单C语言题,有个地方想不明白

来源:百度文库 编辑:高考问答 时间:2024/04/27 21:39:13
一道简单C语言题,有个地方想不明白main()
{
char s1[40]="country",s2[20]="side";
int i=0,j=0;
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]=0;
printf("%s\n",s1);
}

结果我知道是:countryside
但是这一句: s1[i]=0; 有什么用,不写的话对结果有影响没有?

其实你你可以试试,如果有环境的话。去掉那句看有没有什么反应。
因为我现在米环境,所以也帮不了你什么。不过好象应该这样写吧
s1[i]='\0'因为while(s2[j]!='\0') 循环完之后,s1[i]也不再+1了 最后的s1[i]就应该等于最后的s2[i]='\0'.也就是说country+side+\0才是新的s1的值。输出的时候'\0'是不显示的,因为他表示数组内字符串的结束。
不写的话似乎也可以。因为这句s1[i++]=s2[j++]; 就给s1[]加了结束符

while(s1[i]!='\0')
i++;//对应上面的循环

while(s2[j]!='\0')
s1[i++]=s2[j++]; //对应上面的循环

s1[i]='\0'; //这句是不循环的

没有的答案就不一样了,因为在c 语言规定字符串结束的饿标志是'\0',那个最后的s[i]=0,就是说该字符串到此结束,如果没有的话,输出的结果有可能比你预想的要长,因为输出一直到遇见'\0'才结束!

s1[i]=0; 和s1[i]='\0'; 是一样的,表示字符串结束

\0是字符串的结束符。