Вам нужно будет узнать, сколько строк содержится в массиве, либо добавив элемент count в структуру, либо используя значение часового значения NULL.В следующих примерах используется NULL sentinel:
Выделение и инициализация:
STRUCT s;
s.p = malloc(sizeof *s.p * (number_of_strings + 1));
if (s.p)
{
size_t i;
for (i = 0; i < number_of_strings; i++)
{
s.p[i] = malloc(length_of_ith_string + 1);
if (s.p[i])
strcpy(s.p[i], ith_string);
}
s.p[i] = NULL;
}
для соответствующих значений number_of_strings
, length_of_ith_string
и ith_string
.
Доступ / печать:
for (i = 0; s.p[i] != NULL; i++)
printf("String %d: %s\n", i, s.p[i]);
Выделение:
for (i = 0; s.[i] != NULL; i++)
free(s.p[i]);
free(s.p);