blob: 6cd56ac9eec67580835958f948500b8385df1de4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <string.h>
#include <stdlib.h>
#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;
}
|