Si tienes en cuenta que un string cualquiera, como "azul", es realmente un vector de caracteres tienes que, efectivamente, para almacenar una lista de strings necesitas un array bidimensional.
¿Cómo crear un array bidimensional dinámico? tienes que usar malloc / calloc y liberar, cuando ya no sea necesario, con free:
Código C:
Ver originalchar** lista
= (char**)malloc( numElementos
* sizeof(char*) );
for( i=0; i < numElementos; i++ )
lista
[ i
] = calloc( longitudCadena
, sizeof( char ) );
Fíjate que a cada cadena le podrás asignar la longitud que te de la gana.
Para liberar la memoria necesitas hacer el proceso inverso... primero liberas cada una de las cadenas de caracteres y, finalmente, liberas el puntero
lista.
PD.: ¿por qué uso
malloc para
lista y
calloc para cada cadena? simple,
calloc resetea la memoria reservada, pone todos sus bytes a 0. Como el caracter 0 se corresponde con el usado para finalizar las cadenas en c consigo, en una sola línea, que cada cadena aparezca como vacía.
Un saludo