我有char* str1
和char* str2
我想像这样连接res = str1 + str2
strcat(str1, str2)
更改str1的值,这不是我需要的
如何得到这个结果?
您必须首先复制第一个字符串,然后将第二个字符串连接到:
strcpy(res, str1);
strcat(res, str2);
确保res
有足够的空间用于包括空终止符在内的结果。
或者作为一句话,如果你愿意的话(谢谢,Eugene Sh.(:
strcat(strcpy(res,str1), str2)
另一个(也是更安全的(选项是使用snprintf()
,它可以确保不会溢出目标缓冲区:
int count = snprintf(res, sizeof res, "%s%s", str1, str2);
如果count
小于res
的大小减1,则截断结果以进行拟合。注意,res
必须是一个数组(不衰减为指针(,sizeof res
才能工作。若您有另一个缓冲区长度的来源,您可以使用它。
(snprintf信息改编自用户3386109的评论——谢谢!(