Como declarar un char[]

Iniciado por Stakewinner00, 20 Enero 2013, 16:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Stakewinner00

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 (cpp) [Seleccionar]
char mens[size]; me salta error y ya no se que puedo hacer.

Gracias por todo.

0xDani

Memoria dinamica? Cual es el error que te salta?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

fary

Reserva el buffer dinámicamente con la función malloc.

Un byte a la izquierda.

0xDani

Cita de: mDrinky en 20 Enero 2013, 17:15 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?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

Stakewinner00

Cita de: 0xDani en 20 Enero 2013, 20:45 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 [][]

dato000

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.



BatchianoISpyxolo

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.
Puede que desees aprender a programar desde 0: www.espascal.es

Stakewinner00

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 (cpp) [Seleccionar]
if (size>=tamaño_maximo) {
declarar otro char
}

85



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

Nótese la terminación en cero.


atte

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/