#include #include #define SLMAX 100 char * alloc_build_string(const char *ss[]) { size_t total_len = 1; size_t slens[SLMAX]; /* should be enough */ int ns = 0; for (int i = 0; ss[i] != NULL; i++) { if (ns >= SLMAX) return NULL; size_t l = strlen(ss[i]); slens[ns] = l; ns++; total_len += l; } char *res = malloc(total_len); size_t cur = 0; for (int i = 0; i < ns; i++) { memcpy(res+cur, ss[i], slens[i]); cur += slens[i]; } res[cur] = 0; return res; }