Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/01/2009, 15:31
Avatar de calathea
calathea
 
Fecha de Ingreso: octubre-2008
Ubicación: Valladolid
Mensajes: 122
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Almacenar texto introducido en un array? C++

Si declaras el array como un puntero

Cita:
const char* prueba[5];
cin >> prueba[1];
no le puedes poner la cantidad de almacenamiento asi (con [5])

Tienes dos opciones: o lo declaras sin puntero
Código:
const char prueba[5];
O lo declaras como un puntero
Código:
const char * prueba;
Si optas por la segunda opcion siempre puede redimensionar el array y añadirle mas elementos...

Para ello, necesitas usar un malloc antes de comenzar a usar el vector: para esto también tienes varias maneras.

Inicializarlo de golpe los 5 elementos (o los n caracteres que sepas que vas a usar)
Código:
prueba = (const char *) malloc(sizeof(const char[n]));
(donde n puede ser 5 como en tu ejemplo o el numero que necesites)

O bien puedes re-inicializarlo de uno en uno segun vayas necesitando almacenar más caracteres (redimensionar el array que habias inicializado en un principio): antes de empezar a pedir el caracter inicializas el vector con un malloc, como antes...y cada vaz q necesites añadir mas caracteres utilizas un realloc.

Te pongo ejemplo también: tomamos el array de tu ejemplo, en principio necesitas almacenar 5 caracteres...pero mas adelante necesitas introducir un caracter mas...Por tanto, ya inicializaste el vector antes de usarlo con la funcion q te he indicado en el cuadro de codigo anterior (malloc) y has seguido con tu código. Ahora necesitas introducir un caracter mas, por lo que usas un realloc:
Código:
prueba = (const char *) realloc(prueba, (n+1)*sizeof(const char));
(n sigue siendo 5 como en tu ejemplo o el numero que hayas elegido para la funcion malloc)

A partir de aquí se utiliza como un vector nomal y corriente, accediendo a sus posiciones con los [0],[1]...etc (prueba[0], prueba[1]...)

Espero que te haya servido