本帖最后由 mxwawaawxm 于 2019-8-7 10:00 编辑
不使用<string.h>写一个字符串拼接
下面是第一种代码,想把"hello world"接到"welcome!"后面去,可最后没有改变
[C] 纯文本查看 复制代码 #include <stdio.h>
int main(void)
{
char string1[200] = "welcome!";
char *string2 = "hello world";
int i=0;
while (string1[i++] !='\0') {
;
}
while (*string2!='\0') {
*(string1+i) = *string2++;
printf("*(string1+%d)=%c\n", i, *(string1+i));
i++;
}
*(string1+i) = '\0';
printf("*(string1+%d)=%c\n", i, *(string1+i));
puts(string1);
return 0;
}
我发现把其中代码
[C] 纯文本查看 复制代码 while (string1[i++] !='\0') {
;
}
改成
[C] 纯文本查看 复制代码 while (string1[i] !='\0') {
i++;
}
其他不用改动,输出就对了这是为什么呢,请问
[C] 纯文本查看 复制代码 #include <stdio.h>
int main(void)
{
char string1[200] = "welcome!";
char *string2 = "hello world";
int i=0;
while (string1[i] !='\0') {
i++;
}
while (*string2!='\0') {
*(string1+i) = *string2++;
printf("*(string1+%d)=%c\n", i, *(string1+i));
i++;
}
*(string1+i) = '\0';
printf("*(string1+%d)=%c\n", i, *(string1+i));
puts(string1);
return 0;
} |