C语言 翻译

#include<stdio.h>
void main()
{char s1[80],s2[40];
int i=0,j=0;
printf("\ninput string1:");
scanf("%s",s1);
printf("input string2:");
scanf("%s",s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("The new string is:%s\n",s1);
}
看不懂啊,求指导。
主要是这个
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
最好举例下,每一部说得清楚点,谢谢。

这个隔开了写当时就看明白了
while(s1[i]!='\0')
i++;

while(s2[j]!='\0')
s1[i++]=s2[j++];

s1[i]='\0';追问

不是,我的意思是麻烦翻译下,我是看不懂内容

追答

这一段的目的是在s1字串的后面把s2字串连接上然后在最后面加一个结束符'\0';
先进行了个循环,通过s1[i]!=‘\0’最为条件,把i指定为s1的最后一个字符‘\0‘然后,再把字符串s2从这里接一个接一个的往s1的空间里里复制,最后在整个字串的后面加上一个'\0'。

追问

能否举例下,新人有点不懂

追答

假设一个字串名为a1,足够长
定义为 a1[]="abcd"
这时,a1的内存数据
[0] ' a'

[1] ' b'
[2] ' c'
[3] ' d'
[4] '\0'
然后我们定义一个数字,用来作为指向这个数组时的角标,我们通过一个循环,把这个数字设置为结束符'\0'相应的位置,这样,从这个位置继续往内存写入数据,就会把数据写到a1字串的后面然后和原来的数据连接在一起.

int i=0;
while(a1[i]!='\0') \\当下脚标指向结束符时意味着字串数据到此结束,所以用结束符的出现来判断 i++;      \\ 当前所指向的位置是不是字符串的末端,然后一位一位的往下推
接下来得到了一个指向a1的末位置的元素 a1[i]
我们只要接着循环,用a2的结束作为循环结束的标志,然后每循环一位,就往下一个元素的位置写一个数据,就可以把数据拷贝到a1当中.

追问

while(s2[j]!='\0')
s1[i++]=s2[j++];
其中s1[i++]=s2[j++];
可以写成
{s1[i]=s2[j];
i++,j++}
吗?

追答

完全可以,这句的目的就是赋值,然后向后推一位,这么写就是为了个省事.

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网