有个地方不能理解

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:37:32
char str1[40]="xxxxxxxxxxxx";
char str2[]="yyyyyy";
int count1=0;
int count2=0;
while(str1[count1])
count1++;
while(str2[count2])
count2++;
if(sizeof str1<count1+count2+1)
printf("xxxxxxxxx");
else
{
count2=0;
while(str2[count2])
str1[count1++]=str2[count2++];
str1[count1]='\0';
printf("xxxxx");
}

我不明白的是这里
count2=0;
while(str2[count2])
str1[count1++]=str2[count2++];
str1[count1]='\0';书上说可以把字符串连接起来,可我就是看不懂,

你的代码相当于这样
count2=0;

while(str2[count2]!= '\0'){
str1[count1]=str2[count2];
count1++;
count2++;
}

str1[count1]='\0';//结尾的\0表示字符串结束

从循环第一步开始count1由于上面的count1++变成13 虽然只有12个字符,字符数组最后还有个字符的.
str1[13]=str2[0]
循环第二步:
str1[14=str2[1]
依次类推

当while(str1[count1])
count1++;
while(str2[count2])
count2++;运行后,count1和count2的值不再是0,而是达到字符串最后一个字符的位置,count2=0;就是将count2的值重置为0,
while(str2[count2])
str1[count1++]=str2[count2++];就是将str2放到str1的结尾.再用str1[count1]='\0';给它加上结束空白符.

while(str2[count2])
str1[count1++]=str2[count2++];
这个循环就是把str2加到str1
你可以模拟运行一下
假设str1="0123"
str2="abc"
当运行到while之前时
count2=4
count1=0

下面就开始进入循环了,我们给出几个变量在每一个循环的值
循环 count1 count2 str1 str2 备注
初始 4 0 0123 abc
1次循环后 5 1