c语言问题 求详细解释

输出结果是 ebcegf 。
int i=0;
char s1[10]="abc",s2[10]="efg";
strcat(s1,s2);
while (s1[i++]!='\0')
s2[i]=s1[i];
puts(s2);
为什么 求解释过程

int i=0;
char s1[10]="abc",s2[10]="efg";
strcat(s1,s2);//把s2添加到s1后面,s1内容为abcefg
while (s1[i++]!='\0')//遍历s1
s2[i]=s1[i];//把s1内容赋值给s2,由于while语句里有i++,所以是从第一个元素赋值,即从b开始,
// 分别把bcefg赋值到s2[1]-[5],s2[0]的内容是还是一开始的e

puts(s2);//s2的内容为ebcefg
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-08
首先答案是ebcefg不是ebcegf
strcat(s1,s2);为止,s1是abcefg, s2是efg

然后I++这东西是先原值,下次用到时加一
也就是 S1[0]=a!='\0' s2[1]=s1[1]=b;
s1[1]=b!='\0' s2[2]=s1[2]=c;
s1[2]=c!='\0' s2[3]=s1[3]=e;
s1[3]=e!='\0' s2[4]=s1[4]=f;
s1[4]=f!='\0' s2[5]=s1[5]=g;
s1[5]=g!='\0' s2[6]=s1[6]='/0';
而s2[0]=e;
所以s2就是ebcefg了
相似回答