Ich möchte aus einer Datei, die immer gleich aufgebaut ist, Werte auslesen.
Die Auslese Schritte aus der Datei sollen zum Beispiel so aussehen:
- dei ersten 7 Zeilen sollen übersprungen werden
- Die Anzahl der folgenden Zeilen bis zur nächsten Leerzeile soll in die integer Variable "anzahl" geschrieben werden
- Die nächsten 3 Zeilen (einschließlich der eben genannten Leerzeile) sollen übersprungen werden
- Es sollen nun so viele Zeilen übersprungen werden, wie in der Variable "anzahl" genannt
- Die nächsten 3 Zeilen sollen übersprungen werden
- Von der aktuellen Zeile soll der Wert, welcher an der 14. Stelle beginnend steht (Dieser Wert ist eine Realkonstante die zum Beispiel so aussieht: "2.65e-05") gelesen werden. Das muss sich für die Folgenden Zeilen (Zeilenanzahl wie in "anzahl") wiederholen. Die Werte sollen in ein Array (z.B. "Werteeins") geschrieben werden
- Von den folgenden ("anzahl") Zeilen sollen ebenso die Werte ausgelesen werden, allerdings stehen hier hinter den Werten nach 3 Zeichen weitere Werte, die ich ebenfals benötige - Alles soll in Arrays oder Matritzen abgespeichert werden
Überschrift Diese Datei enthält Werte zum einlesen ************************************************** Objekte: ------ Objekt1 Objekt2 Objekt3 Objekt4 Weitere Angaben: ------------ Objekt1 | Stühle Objekt2 | Tische Objekt3 | Fische Objekt4 | Irgendetwas anderes Werte: ----- Objekt1 | 1.45e-03 mm Objekt2 | 1.34e+32 Äpfel Objekt3 | 3.12e+49 Einheit Objekt4 | 1.10e-01 Irgendwas Weitere Werte: ---------- Objekt1 | 6.11e-09 1.59e-04 Objekt2 | 9.32e+09 2.61e-03 Objekt3 | 6.00e+09 3.72e-02 Objekt4 | 3.40e-09 4.83e-01
Wie müsste man die Schritte programmieren?
So wie ich das verstanden hab, beginnt der Filepointer mit dem weiterlesen an der Stelle, wo er aufgehört hat. Demzufolge dachte ich mir, dass man erstmal die Zeilen mit fgets "ablaufen" muss. Die Anzahl bis zu den Werten (also zum Beispiel die 14 Zeichen am Anfang der Zeile könnte man ja mit fread "ablaufen").
Aber welche Anweisungen muss man dazu genau geben?
Ich hab soetwas noch nie gemacht. (Bisher habe ich nur aus einer Datei, in der jeder neue Wert auf einer neuen Zeile stand, Von Anfang bis Ende ausgelesen).
Währe nett, wenn mir jemand Starthilfe geben könnte.
Hab ein bissl probiert:
Habe versucht wiefolgt vor zu gehen:
"for (i=0; i<7; i++) fgets (null, 128, inputfile);"
Die 128 hab ich nur mal so diesem Beispiel entnommen, da ich wenn ichs weglasse ne Fehlermeldung bekommen. Könnte mir aber denken, dass das so nicht ganz richtig ist.
Nun wollte ich (mal testweise) das erste Zeichen mit "fscanf(inputfile, "%c", &x); printf ("%c\n", x);" auslesen. Teoretisch dacht eich, müsste nun ein "O" (von Objekt) angezeigt werden. Stattdessen kommt an dieser Stelle die Meldung: "Segmentation Fault (core dumped)".
Also stimmt schonmal hier was nicht. Aber was?
mfg
Dieser Beitrag wurde von wiseguy bearbeitet: 19. April 2006 - 14:47