Tabelle in TXT schreiben
-
dein Programm sollte die Tabellen intern gespeichert haben, dann kannst du auch die Tabeille Zeilenweise erstellen. Ja und wenn wir schonmal dabei sind dir standard library iomanip ist grade wenn man etwas formatiert ausgeben möchte sehr gut zu gebrauchen, schau sie dir mal an.
-
Vielen Dank für eure Antworten.
Das Problem ist folgendes:
ich habe eigentlich 50.000 Spalten (Anzahl an Monte Carlo Simulationen) und mindestens 1500 Zeilen (Simulationsschritte pro Simualtion).
Natürlich sind 50.000 sehr viel, daher möchte ich lediglich vielleicht die ersten 20 bis 30 Spalten in die TXT schreiben.dein Programm sollte die Tabellen intern gespeichert haben, dann kannst du auch die Tabeille Zeilenweise erstellen.
Gerade das ist nur schlecht möglich, da ich sonst für jede Spalte ein eigenes Objekt erstellen müsste.
Ist es nicht möglich, dass ich einfach Zeile für Zeile in die TXT Datei schreibe, und bei der zweiten Spalte das Ende der ersten Zeile mit z.B. fseek() suche und dort den ersten Wert eintragen, dann das Ende der nächsten Zeile suche, den nächsten Wert eintrage usw.?
Also nach der Reihenfolge:
A1;
A2;
...
Ax;Dann das Ende der ersten Zeile suche (durch ; oder /n gekennzeichnet) und weiterschreibe:
A1;B2;
A2;B2;
...
Ax;Bx;DANKE
-
wofür willst du die txt verwenden? ist doch im grunde egal, wie das ganze gespeichert wird, du musst nur wissen, wie es zu interpretieren ist.
und zur not schreib halt in die datei rein, um speicher zu sparen und schreib sie nach deinen simulationen um. dann steht viel speicher zur verfügung und du kannst nen POD zum speichern der relevanten daten verwenden.
-
wofür willst du die txt verwenden?
ich möchte die Text Datei in Excel importieren, um dort statistische Auswertungen machen zu können.
Was ist den ein POD?
-
plain old data. ne class bzw. nen struct, das nur primitive typen als member enthält.
wenn du das ganze in excel importieren willst, dann kannst du es lassen wie es ist und in excel einfach das gesamte datenblatt transponieren. dann stimmen deine spalten und zeilen wieder.
-
wenn du das ganze in excel importieren willst, dann kannst du es lassen wie es ist und in excel einfach das gesamte datenblatt transponieren. dann stimmen deine spalten und zeilen wieder.
Habe ich auch schon dran gedacht. Aber mir stehen ja nur 256 Spalten in Excel zur Verfügung - ich bröchte aber 1400, um es anschließend transponieren zu können.
Es gibt also keine Möglichkeit in einer geöffneten Datei über setzen von Zeigerntext einzufügen?
-
besinnen wir uns doch mal wieder auf das naheliegenste: warum vertauschst du die beiden schleifen nicht einfach? dann stimmts doch.
zudem würd ich nicht mehr als die 30 spalten die du brauchst ins file schreiben. nen "if < 30" sorgt dann zwar u.u. für zig tausende sprünge, was aber wesentlich performanter ist, als zig tausende schreiboperationen auf die festplatte.
-
Wieso erzeugst du dann nicht mehrere Dateien und liest die dann alle in Excel ein. Du kannst doch dort auch auf andere Tabellen verweisen.
-
qwi100 schrieb:
Es gibt also keine Möglichkeit in einer geöffneten Datei über setzen von Zeigerntext einzufügen?
Doch: fseek, dann fprintf

-
The Moving Filepointer schrieb:
qwi100 schrieb:
Es gibt also keine Möglichkeit in einer geöffneten Datei über setzen von Zeigerntext einzufügen?
Doch: fseek, dann fprintf

Nein, das fügt nicht ein, sondern überschreibt die bisherigen Datei-Inhalte.
-
Wenn man sich vorher ein entsprechendes Format erstellt, dann wird eingefügt, bzw. ERSETZT.
-
Ja, Sicher, aber dieses Format würde so aussehen, daß du die Zeilen bis ans Limit mit Leerzeichen auffüllen müsstest - nicht gerade eine platzsparende Methode (und außerdem ist das rumfuchteln (sorry) mit seekp() und Co. vermutlich langsamer als alle Werte im Ram zu lagern.
-
CStoll schrieb:
Ja, Sicher, aber dieses Format würde so aussehen, daß du die Zeilen bis ans Limit mit Leerzeichen auffüllen müsstest - nicht gerade eine platzsparende Methode (und außerdem ist das rumfuchteln (sorry) mit seekp() und Co. vermutlich langsamer als alle Werte im Ram zu lagern.
Ja, das ist langsamer. Die Bearbeitung im Ram ist sicherlich vorzuziehen.
Um die Dateizeiger kommt man nicht herum, wenn man zu wenig Arbeitsspeicher zur Verfügung hat.
-
hmmmm.... scheint doch schwieriger zu sein als ich gehofft habe.
Ich werde jetzt, wie von Braunstein vorgeschlagen, als Workaround in mehrere Dateien schreiben.
Vielen Dank euch allen