以下程序的输出结果为( )

main(){chars1[40]="country",s2[20]="side";inti=0,j=0;while(s1[i]!='\0')i++;while(s2[j... 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);
}
A side B country C sidetry D countryside
请详细解释。不太明白s1[i]!='\0'这种语句是什么意思。调试的时候看到i=8就跳出第一个循环了。不太懂
展开
 我来答
Irreappearable
推荐于2017-05-20 · TA获得超过4956个赞
知道大有可为答主
回答量:1423
采纳率:25%
帮助的人:3123万
展开全部
\0是表示字符串结束的字符,否则你的si有40个字符空间,实际上只用到7个字符,如何知道这个字符只有7个字符,后面的都是无效的呢?因为第8个字符是\0,s2也是同理

第一个while是通过检查\0找到\0在s1中的位置。找到以后用第二个while把s2的每一个字符添加到s1后面,最后添上\0,来结束字符串。这样s1就包含了原来的s1和s2连接起来的字符,也就是countryside,并打印
追问
可能有一些明白了……不是特别清楚……
那 s1[i++]=s2[j++]是什么意思?还有后面那个s1[i]=0;是要干什么用的?
追答
s1[i++]=s2[j++] 就是逐个把s2的字符复制到s1的后面
s1[i]=0; 是因为字符串结尾需要结束符,也就是\0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式