C char* + char* 连接

C char* + char* concatenation

我有 char* str1char* str2

我想这样连接res = str1 + str2

strcat(str1, str2)改变str1的值,这不是我需要的

如何得到这个结果?

您必须先复制第一个字符串,然后将第二个字符串连接到该字符串:

strcpy(res, str1);
strcat(res, str2);

...确保 res 有足够的 space 分配给结果,包括空终止符。

或者作为 one-liner,如果您愿意(谢谢,Eugene Sh.):

strcat(strcpy(res,str1), str2)

另一个(也是更安全的)选项是使用 snprintf(),它确保您不会溢出目标缓冲区:

int count = snprintf(res, sizeof res, "%s%s", str1, str2);

如果 count 小于 res 的大小减一,结果将被截断以适合。请注意,res 必须是一个数组(不会衰减为指针),sizeof res 才能工作。如果您有缓冲区长度的其他来源,则可以改用它。

(snprintf 信息改编自 user3386109 的评论 -- 谢谢!)