Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Almacenar texto introducido en un array? C++

Estas en el tema de Almacenar texto introducido en un array? C++ en el foro de C/C++ en Foros del Web. Hola, El caso es que estoy haciendo un programa muy largo, con muchos arrays. Necesito poder almacenar el texto introducido en un array Código: const ...
  #1 (permalink)  
Antiguo 15/01/2009, 11:47
 
Fecha de Ingreso: mayo-2008
Ubicación: barcelona
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
Almacenar texto introducido en un array? C++

Hola,
El caso es que estoy haciendo un programa muy largo, con muchos arrays. Necesito poder almacenar el texto introducido en un array

Código:
const char* prueba[5];
cin >> prueba[1];
Aqui me salta un error del compilador. La verdad es que cualquier aportacion se agradece ya que no quiero recurrir a usar strings ya que habre de pasar todas las arrays manualmente y son bastantes.

Saludos
  #2 (permalink)  
Antiguo 15/01/2009, 15:31
Avatar de calathea  
Fecha de Ingreso: octubre-2008
Ubicación: Valladolid
Mensajes: 122
Antigüedad: 15 años, 6 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
  #3 (permalink)  
Antiguo 15/01/2009, 15:41
 
Fecha de Ingreso: mayo-2008
Ubicación: barcelona
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
Respuesta: Almacenar texto introducido en un array? C++

Muchas gracias. Lo he probado y funciona bien. Lo añadire a mi programa
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:56.