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;
}
不改变基础字符串 不断拼接新的字符串
用strcat函数会改变被添加的那个变量,有时候我需要在循环里组合字符串,前面的字符串是不允许变的,只能自己写一个了。
方案一:
#include<stdio.h>
#include <string.h>
int main(void)
{
char str1[100]="begin:";
char str2[100]="str2";
char str3[100]="str3";
char str1_copy[100];
strcpy(str1_copy, str1); // First assembly
strcat(str1_copy,str2);
puts(str1_copy);
strcpy(str1_copy, str1); // New assembly
strcat(str1_copy,str3);
puts(str1_copy);
}
方案2:
#include<stdio.h>
#include <string.h>
int main(void)
{
char str1[100]="begin:";
char str2[100]="str2";
char str3[100]="str3";
char str1_copy[100];
size_t str1_len = strlen(str1); // Remember the original size of str1
strcat(str1,str2);
puts(str1);
str1[str1_len] = 0; // Reset str1 before next assembly
strcat(str1,str3);
puts(str1);
}
更简洁的方案: 用strcpy复制来替代追加
#include<stdio.h>
#include <string.h>
int main(void)
{
char str1[100]="begin:";
char str2[100]="str2";
char str3[100]="str3";
size_t str1_len = strlen(str1);
strcpy(str1+str1_len,str2);
puts(str1);
strcpy(str1+str1_len,str3);
puts(str1);
}
参考:
https://stackoverflow.com/questions/76858716/how-to-string-assembly-without-changing-the-original-string
https://wangdoc.com/clang/string#strcpy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具