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?
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.