fstream - Struktur schreiben
-
Ich versuche eine Struktur direkt in eine Datei zu schreiben. Zu einem gewissen Grad funktioniert dies bereits jedoch kommt es noch zu fehlern bei bestimmten Werten:
#include <fstream> #include <iostream> using namespace std; typedef unsigned short WORD; //2 byte typedef unsigned long DWORD; //4 byte typedef long LONG; //4 byte #pragma pack(1)//Ausrichtung auf Byte-Grenzen (Padding ausschalten) typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER, *PBITMAPFILEHEADER; #pragma pack() int main(int argc, char* argv[]){ BITMAPFILEHEADER bmp; bmp.bfSize=0xa5e; cout<<bmp.bfSize<<endl; fstream t("test.bmp", ios::out); t.write((char*)(&bmp.bfSize), sizeof(&bmp.bfSize)); t.close(); }Beim Öffnen der test.bmp Datei mit einem Hexeditor enthält diese ein "5E 0D 0A", was für mich nicht klar ist da es ja eigentlich ein "5E 0A" sein sollte.

-
Öffne die Datei mal im Binär-Modus
ios::out|ios::binary, dann sollte das Ergebnis stimmen. (im Textmodus ersetzt der Stream die Zeilenenden \n = 0xA durch die Windows-taugliche Version\r\n = 0xD 0XA)
-
Danke, funktioniert damit.
Und ich habe bereits zwei Stunden gesucht bis der Fehler soweit eingeschränkt war...