Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jano4 en 19 Enero 2015, 17:09 pm



Título: tipo de variable para tratar ficheros grandes
Publicado por: Jano4 en 19 Enero 2015, 17:09 pm
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
Código:
?? 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!


Título: Re: tipo de variable para tratar ficheros grandes
Publicado por: kr.chacacreker en 19 Enero 2015, 19:32 pm
Seria "leer ficheros en c" o algo asi para buscar en google.  :rolleyes: :silbar: : :-X


Título: Re: tipo de variable para tratar ficheros grandes
Publicado por: 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:

Código
  1. typedef struct{
  2.    unsigned int size;
  3.    char* buffer;
  4. } Data;



Título: Re: tipo de variable para tratar ficheros grandes
Publicado por: Jano4 en 19 Enero 2015, 23:36 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:

Código
  1. typedef struct{
  2.    unsigned int size;
  3.    char* buffer;
  4. } 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?
Código:
    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


Título: Re: tipo de variable para tratar ficheros grandes
Publicado por: ivancea96 en 20 Enero 2015, 00:07 am
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.


Título: Re: tipo de variable para tratar ficheros grandes
Publicado por: Jano4 en 20 Enero 2015, 22:08 pm
ok, muchas gracias por las respuestas!