tipo de variable para tratar ficheros grandes

Iniciado por Jano4, 19 Enero 2015, 17:09 PM

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

Jano4

Hola a todos, soy nuevo por aquí,

quiero hacer una función que abra un archivo en modo binario y lo devuelva en algún tipo de variable para poder tratarlo byte a byte o con bloques del tamaño que yo quiera (para poder cifrarlo luego, pero ese es otro tema), y el caso es que después de

?? funcion(char* ruta)
{
FILE fp=fopen(ruta,"rb");
}

no que tipo de variable es la más adecuada para poder usar así los datos del fichero para que la devuelva la función, ni si hace falta algo más que asignar memoria para tratar con esa variable que contenga toda la información.
me vale cualquier orientación, consejo o documentación,

gracias!

kr.chacacreker

Seria "leer ficheros en c" o algo asi para buscar en google.  :rolleyes: :silbar: : :-X

ivancea96

FILE es una opción. Si estás seguro de querer volcar todo el contenido en una variable, lo mejor sería en un char* o unsigned char.

Ya que es un fichero binario, tendrías que guardar en algún lugar el tamaño del buffer, y eso lo puedes hacer con un unsigned int:

typedef struct{
    unsigned int size;
    char* buffer;
} Data;



Jano4

Cita de: ivancea96 en 19 Enero 2015, 19:44 PM
FILE es una opción. Si estás seguro de querer volcar todo el contenido en una variable, lo mejor sería en un char* o unsigned char.

Ya que es un fichero binario, tendrías que guardar en algún lugar el tamaño del buffer, y eso lo puedes hacer con un unsigned int:

typedef struct{
    unsigned int size;
    char* buffer;
} Data;



muchas gracias por contestar tan rápido :D
otra pregunta, de estos dos struct cual crees que es más conveniente para usar en el programa, por eficiencia o lo que sea?

    typedef struct{
       unsigned int size;
       char* buffer;
    } Data;

    typedef struct{
       char* buffer;
       char* next_pointer; //puntero al siguiente char
    } Data;

es decir, todo en el mismo bloque de memoria o no es necesario?

gracias de antemano

ivancea96

Hombre, la segunda opción puede ser mejor en archivos muy grandes, pero también será más engorrosa para tratar los datos. Tú verás lo que te sirve mejor.

Jano4