Если вы хотите, чтобы строковый конструктор в c динамически распределял память, я нашел http://linux.die.net/man/3/vasprintf полезным.
Пример:
#include <stdio.h>
int i;
printf("//Simple dynamic string builder:\n");
char *strs[6] = {"I","am","an","array","of","strings"};
char *buf = "["; // open bracket
for (i=0;i<6;i++) {
// Dynamically build and allocate memory
asprintf(&buf,"%s%s",buf,strs[i]);
if(i!=5) { // Add a comma , after each but skip the last
asprintf(&buf,"%s,",buf);
}
}
asprintf(&buf,"%s]",buf); // closing backet
printf("\"%s\"\n",buf);
Выходные данные
//Simple string builder:
"[I,am,an,array,of,strings]"
, поэтому char *buf
динамически расширяется на asprintf
и создается путем форматирования в asprintf
заявление.