Non ho guardato con attenzione il codice che hai postato, ma sei sicuro di aprire il file di input e quello di output in modalità binaria?