Я думаю, что вы хотите объединить строки.Если да, то да.Вы должны знать, сколько места вам нужно, прежде чем выделять его.
На самом деле вы можете использовать realloc
, но на самом деле это просто копировать предыдущую строку каждый раз и гораздо менее эффективно.
Некоторый код: (при условии char *s[]
и int n
)
int i,l=1;
for (i=0;i<n;i++) l+=strlen(s[i]);
char *r=malloc(l);
r[0]=0;
for (i=0;i<n;i++) strcat(r,s[i]);
Редактировать: Как некоторые комментарии, strcat
неэффективен, когда вы знаете длину.(Я все еще предпочитаю это, поскольку он выделяет память за один раз.) Более эффективный код:
int i,l=1;
for (i=0;i<n;i++) l+=strlen(s[i]);
char *r=malloc(l);
char *d=r;
for (i=0;i<n;i++) {
srtcpy(d,s[i]);
d+=strlen(s[i]);
}