I am using snprintf to concatenate a string to a char array:
char buf[20] = \"\";
snprintf(buf, sizeof buf, \"%s%s\", buf, \"foo\");
printf(\"%s\\n\", buf);
While the accepted answer is alright, the better (in my opinion) answer is that concatenating strings is wrong. You should construct the entire output in a single call to snprintf. That's the whole point of using formatted output functions, and it's a lot more efficient and safer than doing pointer arithmetic and multiple calls. For example:
snprintf(buf, sizeof buf, "%s%s%s", str_a, str_b, str_c);