Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/05/2011, 22:42
_Lx
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 11
Busqueda Respuesta: Es posible guardar letras en un arreglo de esta forma:

Código C:
Ver original
  1. char cadena[10][20];

Al poner "char cadena[10][20]", estás declarando un vector de 10 cadenas y cada cadena tiene 20 de dimensión.

Para dar valores a cada cadena es como dar valores a elementos de un vector:

Código C:
Ver original
  1. //              0   1   2   3    4
  2.    cadena[0]= {'h','o','l','a','\0'}; // si declaras de esta forma debes poner '\0' al final que significa fin de cadena.
  3.    cadena[1]= "chau"; // al declarar de esta forma el '\0' se pone automáticamente al final.
  4.          ...

Ahora como sabes , una cadena es también un vector de caracteres, así que para acceder a cada caracter, sería así:

Código C:
Ver original
  1. cout << cadena[0][2]; // Imprime el elemento 2 de la cadena 0 ('l')
  2. cout << cadena[1][3]; // Imprime el elemento 3 de la cadena 1 ('u')

Para tu problema sería así:

Código C:
Ver original
  1. int main()
  2. {
  3.    char *cT; // temporal.
  4.    char letras[3][2]; // creas el vector de cadenas "letras" de dimensión 3 y cada elemento (cadena) de dimensión 2.
  5.    // en realidad ya no sería una cadena sino un vector de caracteres, ya que parece ser cadena tiene que tener el fin de cadena '\0'.
  6.    ...
  7.  
  8.    for( int i = 0; i < 3; i++){
  9.      
  10.       // letras[i] = funcion(...); // esto no compilaría porque funcion(...) te devuelve una dirección y letras[i] es un vector (de caracteres) estático (no se le puede cambiar la dirección), por eso se debería utilizar lo sgte:
  11.       cT = funcion(...); // cT espera una dirección y eso es lo que obtiene de funcion(...).
  12.       strncpy( letras[i], cT, 2); // copiamos los 2 primeros caracteres de cT en letras[i].
  13.       free(cT); // liberamos la memoria ocupada por cT.  
  14.    }
  15. }

Última edición por _Lx; 21/05/2011 a las 23:09