I have char* str1 and char* str2
I wanna concatenate like this res = str1 str2
strcat(str1, str2) change value of str1, it is not what i need
How to get this result?
CodePudding user response:
You would have to first copy the first string, and then concatenate the second to that:
strcpy(res, str1);
strcat(res, str2);
... making sure res has enough space allocated for the result, including the null terminator.
Or as a one-liner, if you wish (thanks, Eugene Sh.):
strcat(strcpy(res,str1), str2)
Another (and safer) option is to use snprintf(), which assures you will not overflow the destination buffer:
int count = snprintf(res, sizeof res, "%s%s", str1, str2);
If count is less than the size of res minus one, the result was truncated to fit. Note that res must be an array (not decayed to a pointer) for sizeof res to work. If you have another source of the buffer length, you could use that instead.
(snprintf info adapted from user3386109's comment -- thank you!)
