Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Stakewinner00 en 20 Enero 2013, 16:58 pm



Título: Como declarar un char[]
Publicado por: Stakewinner00 en 20 Enero 2013, 16:58 pm
Hola, me preguntaba como podría declarar un char[] muy grande. Tengo que abrir un archivo de 1gb y el array debe ser enorme.

Probe con archivos mas pequeños de hasta 57419067 carácteres pero cuando declaro el array
Código
  1. char mens[size];
me salta error y ya no se que puedo hacer.

Gracias por todo.


Título: Re: Como declarar un char[]
Publicado por: 0xDani en 20 Enero 2013, 17:12 pm
Memoria dinamica? Cual es el error que te salta?


Título: Re: Como declarar un char[]
Publicado por: fary en 20 Enero 2013, 17:15 pm
Reserva el buffer dinámicamente con la función malloc.



Título: Re: Como declarar un char[]
Publicado por: 0xDani en 20 Enero 2013, 20:45 pm
Reserva el buffer dinámicamente con la función malloc.



Creo que esta en C++, asi que con new.

De todas formas, Stakewinner00, necesitas cargar todo el archivo a la memoria? No puedes operar con el partes?


Título: Re: Como declarar un char[]
Publicado por: Stakewinner00 en 20 Enero 2013, 21:07 pm
Creo que esta en C++, asi que con new.

De todas formas, Stakewinner00, necesitas cargar todo el archivo a la memoria? No puedes operar con el partes?

Si, pero lo tengo que pasar a diferentes bucles por lo que me va mejor si lo tengo en una sola variable. Supongo que lo que puedo intentar es hacer algo así char [][]


Título: Re: Como declarar un char[]
Publicado por: dato000 en 21 Enero 2013, 01:31 am
je precisamente estoy retomando mi libro de C, voy en asignación dinamica de memoria, con el famoso malloc.

Pero esto es algo bueno, exagerado no?? no es posible asignarlo en string obviamente, pero no podria hacerse en subfunciones con varias variables que acumulen partes de memoria?? dividirlo en digamos, 200 mb o algo así?? no puede resultar algo?

je de ahora en adelante voy a estar bien pendiente del foro de C/C++ para pulir conocimientos.


Título: Re: Como declarar un char[]
Publicado por: BatchianoISpyxolo en 21 Enero 2013, 01:42 am
char ** linea: equivalente a un array de strings pero de forma dinámica

Lo único que tienes que hacer es alocar memoria mientres necesites hacerlo o, por el contrario, eliminarla cuando no la necesites.

El coste espacial es mayor / elemento almacenado que de manera estática pero te evitas estimar un tamaño, aunque sabiendo que es de un GB y sabiendo el tamaño de línea...

Haz pruebas con algún archivo pequeñito y según los resultados que obtengas aplícalo al de 1GB.


Título: Re: Como declarar un char[]
Publicado por: Stakewinner00 en 21 Enero 2013, 15:09 pm
Creo que al final si que tendre que intentar hacerlo con diferentes chars.

Una pregunta, cual es el tamaño máximo de un char[]? Es para hacer algo tipo

Código
  1. if (size>=tamaño_maximo) {
  2. declarar otro char
  3. }


Título: Re: Como declarar un char[]
Publicado por: 85 en 22 Enero 2013, 03:01 am


Código:
char asd[] = { 'H','o','l','a',' ','M','u','n','d','o',0};

Nótese la terminación en cero.


atte