Arrays in .txt Datei speichern
-
Ich habe eine Array mit 2 Dimensionen. z.B. Laufer [2][3] Nun will ich meine Arrays in eine .txt Datei speichern. Wie mache ich das?
Bitte um Hilfe.
-
Du schreibst es mit einer while-schleife in einen fstream und liest es später durch eine while-schleife wieder ein

-
// irgendwo geoeffneter Outputstream outp for(int i = 0; i < 2; i++) { for(int x = 0; i < 3; x++) outp << Laufer[i][x] << " "; outp << endl; }Gibt vielleicht elegantere Methoden... aber es müsste gehen.
-
Bisher habe ich mit SaveDialog gearbeitet. Wie öffne ich einen outputstream?
-
Hallo
Siehe C++ FAQ, den Thread Dateien und Ströme.
bis bald
akari
-
Stratege993 schrieb:
Ich habe eine Array mit 2 Dimensionen. z.B. Laufer [2][3] Nun will ich meine Arrays in eine .txt Datei speichern. Wie mache ich das?
Bitte um Hilfe.
#include <stdio.h> int main( /* Zuerst muss die Datei erzeugt werden */ FILE* fz = fopen("Array.txt","w"); /* Falls das Array Zahlen enthaelt, und davon 5 Stueck, dann funktioniert diese Schleife. Sinngemaess die Formatangabe '%d' bzw. die '5' ersetzen, falls das Array Laufer anders aussieht: */ for(int i = 0; i < 5; i++) fprintf(fz, " %d ", Laufer[i]); /* Die zusaetzlichen Leerzeichen erweisen sich spaeter beim Lesen der Daten als praktisch */ /* Datei wieder schliessen */ fclose(fz); return 0; }So koennte es klappen. Mit einem Editor kann man dann beispielsweise die .txt Datei mit ihren fünf Zahlen bestaunen.
Falls Strings im Laufer Array enthalten sein sollten: Formatangabe %s statt
%d. Ansonsten eine sehr aehnliche Schleife.
Ausserdem eventuell eine Angabe zur Feldbreite zwischen das % und den Formatbuchstaben, schaut bei Gleitkommazahlen besser aus.
Als Alternative zu fprintf bietet sich bei Strings noch fputs an.Bei sehr grossen Arrays gibt es noch das alternative Funktionenduo fwrite/fread, die sehr effektiv sind, wenn die Daten zusammenhaengend 'hintereinander' im Speicher liegen. Ausserdem moechte man womoeglich gar ein Array speichern, dessen Elemente von irgend einer nicht naeher bekannten Struktur sind. Auch in solchen Faellen erweisen sich fwrite sowie fread als Allzweckfunktionen.
-
Hallo
Narrensicher schrieb:
Stratege993 schrieb:
Ich habe eine Array mit 2 Dimensionen. z.B. Laufer [2][3] Nun will ich meine Arrays in eine .txt Datei speichern. Wie mache ich das?
Bitte um Hilfe.
#include <stdio.h> int main( /* Zuerst muss die Datei erzeugt werden */ FILE* fz = fopen("Array.txt","w"); /* Falls das Array Zahlen enthaelt, und davon 5 Stueck, dann funktioniert diese Schleife. Sinngemaess die Formatangabe '%d' bzw. die '5' ersetzen, falls das Array Laufer anders aussieht: */ for(int i = 0; i < 5; i++) fprintf(fz, " %d ", Laufer[i]); /* Die zusaetzlichen Leerzeichen erweisen sich spaeter beim Lesen der Daten als praktisch */ /* Datei wieder schliessen */ fclose(fz); return 0; }So koennte es klappen. Mit einem Editor kann man dann beispielsweise die .txt Datei mit ihren fünf Zahlen bestaunen.
Falls Strings im Laufer Array enthalten sein sollten: Formatangabe %s statt
%d. Ansonsten eine sehr aehnliche Schleife.
Ausserdem eventuell eine Angabe zur Feldbreite zwischen das % und den Formatbuchstaben, schaut bei Gleitkommazahlen besser aus.
Als Alternative zu fprintf bietet sich bei Strings noch fputs an.Bei sehr grossen Arrays gibt es noch das alternative Funktionenduo fwrite/fread, die sehr effektiv sind, wenn die Daten zusammenhaengend 'hintereinander' im Speicher liegen. Ausserdem moechte man womoeglich gar ein Array speichern, dessen Elemente von irgend einer nicht naeher bekannten Struktur sind. Auch in solchen Faellen erweisen sich fwrite sowie fread als Allzweckfunktionen.
Was hat das mit C++ zu tun??

chrische
-
#include <stdio.h> int main( /* Zuerst muss die Datei erzeugt werden */ FILE* fz = fopen("Array.txt","w"); /* Falls das Array Zahlen enthaelt, und davon 5 Stueck, dann funktioniert diese Schleife. Sinngemaess die Formatangabe '%d' bzw. die '5' ersetzen, falls das Array Laufer anders aussieht: */ for(int i = 0; i < 5; i++) fprintf(fz, " %d ", Laufer[i]); /* Die zusaetzlichen Leerzeichen erweisen sich spaeter beim Lesen der Daten als praktisch */ /* Habe das jetzt sinngemaess fuer das 2 x 3 Array veraendert, */ for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) fprintf(fz, " %d ", Laufer[i][j]); /* Datei wieder schliessen */ fclose(fz); return 0; }
-
Hallo
Nein chrische meint das fprintf und Co. in C++ besser durch die bereits angesprochenen std::streams ersetzt werden sollen. Und auf das wie hab ich bereits mit dem FAQ-Beitrag hingewiesen.
bis bald
akari
-
Was hat das mit C++ zu tun??

chrische
Viele Wege führen nach Rom !
Man sollte es nicht als Handicap betrachten, dass auch die guten alten C-Funktionen in C++ aufrufbar sind, sondern vielmehr als zusaetzliche Alternative.
-
Narrensicher schrieb:
Was hat das mit C++ zu tun??

chrische
Viele Wege führen nach Rom !
Man sollte es nicht als Handicap betrachten, dass auch die guten alten C-Funktionen in C++ aufrufbar sind, sondern vielmehr als zusaetzliche Alternative.Mag sein. Aber nicht, wenn in einem C++-Forum gefragt wurde. Sonst wäre im C-Forum gefragt worden.
/EDIT: Uh, Tippfähigkeiten lassen rapide nach.

-
Konrad Rudolph schrieb:
/EDIT: Uh, Tippfähigkeiten lassen rapide nach.

Wird Zeit für ein Nickerchen
