Hallo Experte!
Ich habe mit einem Programm in C++ ein kleines Problem. Sinn ist es Daten, die über ein Netzwerk in einen Buffer geschrieben werden, an Hand ihrer Magic Number in das entsprechende Dateiformat zu schreiben. Nun habe ich die Daten in Binärdateien geschrieben, öffne diese, lese die Magic Number und versuche sie bspw. als PDF zu speichern. Nur der letzte Schritt funktioniert einfach nicht. Ich verwende die write() funktion im ofstream und öffne die neue Datei im binary mode. Aber die resultierende Datei lässt sich nicht öffnen, im Textedit kann ich sehen, dass nach einigen Zeilen Code einfach aufgehört wurde zu schreiben, obwohl der buffer lang genug war… Schicke ich eine txt Datei durch das Programm, funktioniert alles problemlos, der gesamte Inhalt wird in die neue Datei geschrieben. Allerdings haben txt Dateien ja keine Magic Number, also hilft mir das nicht besonders weiter. Hier ein Teil des Codes, der für das Problem interessant ist:
long size;
char * buffer;
std::ifstream in(filenames[i].c_str(),std::ios::in | std::ios::binary); //filenames include filename in .bin format
std::filebuf *pbuf;
pbuf=in.rdbuf();
size=pbuf->pubseekoff (0,std::ios::end,std::ios::in);
pbuf->pubseekpos (0,std::ios::in);
char magic1[12] = {0};
in.read(magic1, sizeof(magic1));
unsigned char magic[12] = {0};
for (int h = 0; hsgetn (buffer,size);
in.close();
myfile.write(buffer,size);
myfile.close();
delete[] buffer;
std::string temp2 = "open "; // hier wird die Datei über das Terminal geöffnet, was auch funktionieren würde, wenn die Datei nicht kaputt wäre
temp2.append(temp);
system(temp2.c_str());
}
Vielen Dank im Voraus für jede Art von Hinweis?