#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++}
吗?
完全可以,这句的目的就是赋值,然后向后推一位,这么写就是为了个省事.