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

Reserva de espacio para array

Estas en el tema de Reserva de espacio para array en el foro de C/C++ en Foros del Web. Hola, Tengo que leer un montón de caracteres de un fichero y los quiero colocar en un array para luego trabajar con ellos. El problema ...
  #1 (permalink)  
Antiguo 22/11/2011, 12:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Pregunta Reserva de espacio para array

Hola,

Tengo que leer un montón de caracteres de un fichero y los quiero colocar en un array para luego trabajar con ellos.

El problema es que no se la longitud que tendrá el fichero.

No se como resolverlo para reservar el espacio necesario cada vez y no menos.


Muchas gracias por vuestra ayuda!



Por ahora tengo así el código:

Código:
   char cadena[100000]; 

   ifstream f("c:\\out.txt", ifstream::in);

   while (! f.eof() ) 
   {
		f >> letra;
		cadena[i] = letra;
		i++;
   }
  #2 (permalink)  
Antiguo 22/11/2011, 12:54
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Reserva de espacio para array

Aqui tienes una solucion!

Código C++:
Ver original
  1. int filelen(ifstream & is)
  2. {
  3.      int previous = is.tellg();
  4.      is.seekg (0, ios::end);
  5.      length = is.tellg();
  6.      is.seekg (previous, ios::beg);
  7.      return length;
  8. }

Referencias: http://www.cplusplus.com/reference/i...istream/tellg/
  #3 (permalink)  
Antiguo 22/11/2011, 16:48
 
Fecha de Ingreso: noviembre-2007
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Reserva de espacio para array

Gracia! Funciona.

Pero me queda una duda, como creo el array porque lo prove así y da error:

Código:
   int m = filelen(f);
   char cadena[m];
  #4 (permalink)  
Antiguo 22/11/2011, 16:52
 
Fecha de Ingreso: noviembre-2007
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Reserva de espacio para array

Cita:
Iniciado por fearhds Ver Mensaje
Gracia! Funciona.

Pero me queda una duda, como creo el array porque lo prove así y da error:

Código:
   int m = filelen(f);
   char cadena[m];


encontré la solución:

Código:
   char *cadena;
   int m = filelen(f);
   cadena = new char [m];

Etiquetas: espacio, cadenas
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 04:54.