fputc() verschluckt Zeichen

OP #6780390
Lesenswert?

Hallo zusammen,

ich habe eine BMP-Datei, von der ich nur noch ein C-Array habe (und die 
Original-Datei fehlt).

Eigentlich kein Problem - einfach das Array wieder in eine Datei 
speichern (siehe Quelltext im Anhang). Aber irgendetwas macht mir einen 
Strich durch die Rechnung. Die ersten und die letzten HEX-Werte stimmen 
immer (überprüft mit einem HEX-Editor). Aber mittendrin scheint fputs() 
Zeichen zu verschlucken oder zu verdoppeln - in sich auch konsistent, 
denn bei jedem Array kommt immer die gleiche Binärdatei heraus 
(zumindest bei den Versuchen, die ich bis jetzt gemacht habe). Unterm 
Strich ist die Datei immer grob 1000 Bytes zu groß (obwohl die in Zeile 
4657 angezeigte Größe stimmt) und natürlich unbrauchbar.

Build-Umgebung ist ein betagter (tdm64-1) gcc 5.1.0 oder der 9.2.0

Was passiert hier? Ich weiss, dass fputc() Zeichen bis zu einem Flush 
oder Programmende zurückstellen darf, aber Zeichen verdoppeln?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren