fstream Problem: Nicht alles wird gespeichert
-
hi erstmal^^
so zu meinem Problem: Ich hab ein Programm geschrieben was ein Dreidimensionales Array schreibt und von jede Position als Adresse ausgebe. Soweit so gut das Funktioniert. Doch ich möchte diese Adressen auch in einer .txt Datei speichern was leider nicht funktioniert da nur ein Teil gespeichert wird (bei mir 28 Zeilen von 36). Woran könnte das liegen? i-jemand eine Idee?
Hier der Code:
#include <iostream> #include <fstream> using namespace std; int main () { int t; fstream file; file.open ("adressen.txt", ios::out | ios::app); int var [6][6][6]; for (int a=0;a<6;a++) { for (int b=0;b<6;b++) { for (int c=0;c<6;c++) { cout << &var [a][b][c] << " "; file << &var [a][b][c] << " "; } cout << "\n"; file << "\n"; } cout << "\n"; file << "\n"; } cout << "\n"; cout << "Gesamtgroese : " << sizeof (var) << " Bytes\n"; cout << "Einzelgroese : " << sizeof (var[0]) << " Bytes\n"; cout << "Anzahl Elemente : " << sizeof (var) / sizeof (var[0]) << "\n"; while (1); }mfg
the.specialist
-
Du solltest ev. zuerst mal noch was reinfüllen.

Ansonsten sehe ich kein Problem.
-
ahh bin ich *** So hab den Fehler jetzt selber gefunden. Man sollte natürlich auch nachdem man die Schleifen durschlaufen hat den file schließen mit file.close() aber warum gerade das diesen Fehler verursacht hat bleibt mir weiterhin ein rätsel.
Trotzdem thx^^
mfg
the.specialist
-
the.specialist schrieb:
ahh bin ich *** So hab den Fehler jetzt selber gefunden. Man sollte natürlich auch nachdem man die Schleifen durschlaufen hat den file schließen mit file.close() aber warum gerade das diesen Fehler verursacht hat bleibt mir weiterhin ein rätsel.
Trotzdem thx^^
mfg
the.specialistDas war sicher nicht das Problem. Das ist ja das schöne an Objekten und RAII.

Das schliesst sich schon von selbst, wenn main verlassen wird. Mich dünkt eher, dass du wirklich irgendwlche Zufallsdaten drin hattest, wo dann hald irgendwann nichts mehr gekommen ist.
-
Desweiteren ist dort nirgends ein flush zu sehen, daher wird auch jede Ausgabe gebuffert, so daß evtl. der neueste Eintrag (oder mehr) fehlen. Da du das Programm auch nicht beendest, sondern in eine Endlosschleife laufen läßt, wird der Buffer wohl auch nicht mehr geschrieben.
Flushen geht zB ganz einfach mit endl statt "\n".