stream problem
-
hi,
also... ich setze alle elemente in einem array die nicht gesetzt wurden automatische auf 0x00... trotzdem sehe ich dann in der datei dann so komische zeichen wie
"LeD D ˆd h$5 h$5 ½D `)fw bD"
ich hab wirklich alles geflusht was nur geht... aber geht trotzdem nicht... weiß jmd wieso??
ich schreibe mit "ios_base::app"...
danke
-
Du willst also eine Binärdatei schreiben. Dann musst du auch ios::binary als Flag verwenden. Dann kannst du außerdem nicht die Datei im Plain-Text-Modus öffnen, wie du es offensichtlich getan hast, sondern musst sie auch binär wieder einlesen und interpretieren oder mit einem Hex-Editor anschauen.
-
nee... ich lese plaintext in ein array... und die überschüssigen felder setze ich auf 0x00...
und ich wollt auch plaintext schreiben... da müsste doch theoretisch dieses "NUL" kommen wenn ich das mit nem normalen editor auf mache...
???
-
Ein bisschen Quelltext wäre von Vorteil.
-
ofstream File; File.open("File.txt",ios_base::app); unsigned int SECTOR, X, Y, Z; for(SECTOR = 0; SECTOR <= 7; SECTOR++) for(Z = 0; Z <= 3; Z++) for(Y = 0; Y <= 3; Y++) for(X = 0; X <= 3; X++) File << cube[SECTOR][Z][Y][X]; //Close file File.flush(); File.close();der "cube" ist schon voll mit daten bzw mit dem 0x00 gefüllt...
-
Und wie liest du wieder ein? Garantiert liest du keine Ganzzahlen ein, sondern Zeichenketten. Dann brauchst du dich auch nicht über die "komischen" Zeichen zu wundern.
-
ich44444 schrieb:
der "cube" ist schon voll mit daten bzw mit dem 0x00 gefüllt...
Anscheinend nicht. Zeig doch mal die Definition von cube und wie du ihn füllst. Das sieht nämlich schwer danach aus, als wäre ****cube entweder ein Pointer oder doch nicht initialisiert.
-
SeppJ schrieb:
****cube
Wieso fluchst du denn?
:p
-
while(!infile.eof()){ for(SECTOR = 0; SECTOR <= 7; SECTOR++){ for(unsigned int i = 0; i<= BLOCKSIZE - 1;i++) { buffer[i] = 0x00; } infile.read(buffer, BLOCKSIZE); for(Z = 0; Z <= 3; Z++) { for(Y = 0; Y <= 3; Y++){ for(X = 0; X <= 3; X++) { cube[SECTOR][Z][Y][X] = buffer[INDEX]; INDEX += 1; } } } } INDEX = 0;}
-
Wie wärs denn mal mit nem kompilierbaren Code, der den Fehler reproduziert?
Wieso liest du Zeichenketten ein, wenn du Ganzzahlen haben willst? Warum gibst du Zeichenketten aus, wenn du Ganzzahlen ausgeben willst (nein, den Code der Ausgabe hast du noch nicht gezeigt, es ist aber offensichtlich, dass du dort keine Integer ausgibst)?
-
Deine Ausgabe erfolgt formatiert mittels
operator<<. Deine Eingabe dann unformatiert mittelsfstream::read. Das kann nicht gut gehen.