Home > OS >  C char* char* concatenation
C char* char* concatenation

Time:02-11

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!)

  • Related