
21/05/2011, 22:42
|
| | Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años, 9 meses Puntos: 11 | |
Respuesta: Es posible guardar letras en un arreglo de esta forma:
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// 0 1 2 3 4 cadena[0]= {'h','o','l','a','\0'}; // si declaras de esta forma debes poner '\0' al final que significa fin de cadena. cadena[1]= "chau"; // al declarar de esta forma el '\0' se pone automáticamente al final. ...
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 originalcout << cadena[0][2]; // Imprime el elemento 2 de la cadena 0 ('l') cout << cadena[1][3]; // Imprime el elemento 3 de la cadena 1 ('u')
Para tu problema sería así:
Código C:
Ver originalint main() { char *cT; // temporal. char letras[3][2]; // creas el vector de cadenas "letras" de dimensión 3 y cada elemento (cadena) de dimensión 2. // 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'. ... for( int i = 0; i < 3; i++){ // 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: cT = funcion(...); // cT espera una dirección y eso es lo que obtiene de funcion(...). strncpy( letras [i ], cT , 2); // copiamos los 2 primeros caracteres de cT en letras[i]. free(cT ); // liberamos la memoria ocupada por cT. } }
Última edición por _Lx; 21/05/2011 a las 23:09 |