As a bonus, this works with e.g.
char buf[256]; buf[0] = 'x'; buf[1] = '\0';
strcatm(buf, buf, buf, buf);
producing a string of 16 'x's