#include #include #include #include char *strjoin(const char *first, ...) { va_list va; int len = strlen(first); char *buf = NULL; va_start(va, first); while (1) { const char *s = va_arg(va, const char *); if (s == NULL) break; len += strlen(s); } va_end(va); buf = malloc(len + 1); if (buf == NULL) return NULL; strcpy(buf, first); va_start(va, first); while (1) { const char *s = va_arg(va, const char *); if (s == NULL) break; strcat(buf, s); } va_end(va); return buf; } int main(int argc, char **argv) { printf("'%s'\n", strjoin("hello, ", "world!", "\n", NULL)); return 0; }