можно как-то так:
char * concat(const char * s1, const char * s2)
{
size_t l1 = strlen(s1);
size_t l2 = strlen(s2);
size_t len = l1 + l2 + 1;
char * dst = (char *)malloc(len);
memcpy(dst, s1, l1);
memcpy(dst + l1, s2, l2);
dst[len - 1] = 0;
return dst;
}
http://www.rsdn.ru/forum/cpp/2866797.1.aspx