[MOD] fichero binario

Iniciado por prosco, 17 Mayo 2011, 22:41 PM

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

prosco

Hola a todos

Cuando leo de un fichero binario y escribo en otro:

fp = fopen("viejo.exe","rb+");
fn = fopen("nuevo.exe","w+");

while((c=getc(fp))!=EOF)
fputc(c,fn);

fclose(fp);
fclose(fn);

Al leer un carácter 0x0A de viejo.exe escribe 0x0D y 0x0A en nuevo.exe

Alguien me puede explicar por que?

willyhunting

Hola prosco,

Así, echando un vistazo por encima, revisa lo siguente:


  • Si los ficheros son ejecutables, ¿por qué abres el de lectura como binario y el de escritura como un archivo de texto? Ambos deberían abrirse como archivos binarios.
  • Si en uno sólo vas a leer y en el otro solo vas a escribir, ¿por qué los abres en modo lectura/escritura ambos (caracter +)? Debería abrirse el de lectura en modo lectura y el de escritura en modo escritura.
  • Si trabajas en modo binario, deberías utilizar fread y fwrite, en lugar de fgetc y fputc. Es más coherente, y te evitarás comportamientos sorpresa.