C语言的字符串拼接
用strcat函数会改变被添加的那个变量,有时候我需要在循环里组合字符串,前面的字符串是不允许变的,只能自己写一个了。
在知乎找到了答案,我改写的简单了些,容易看懂。参考:https://zhuanlan.zhihu.com/p/346126120
补充:字符串的本质是指针,只要修改了字符串,指针的值就一定会变,所以还是复制一份再进行运算。
#include<stdio.h>
int main(void)
{
char str1[100]="abc";
char str2[100]="hijk";
int i=0,j=0;
while(str1[i]!='\0')//计算字符串1长度
{
i++;
}
while(str2[j]!='\0')//把字符串2赋值到字符串1的后面
{
//此时的i是字符串1的长度,作为下标正好是最后一个字符的下一个。
//此时的j是字符串2的开始,下标为0。相当于把字符串2添加到字符串1的末尾。然后自增,继续赋值下一个。
str1[i++]=str2[j++];
}
str1[i]='\0';//字符串1已经被重写了,末尾要添加结束字符。
puts(str1);
return 0;
}