Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/07/2015, 07:38
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Array de array de caracteres en C

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 original
  1. char** lista = (char**)malloc( numElementos * sizeof(char*) );
  2.  
  3. for( i=0; i < numElementos; i++ )
  4.   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