WinFuture-Forum.de: C Programmierung: Einlesen/auslesen Von Werten Einer Datei - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C Programmierung: Einlesen/auslesen Von Werten Einer Datei Anfängerfrage


#1 Mitglied ist offline   wiseguy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 23
  • Beigetreten: 15. März 06
  • Reputation: 0

geschrieben 19. April 2006 - 13:56

Hallo

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
Die Datei sieht also zum Beispiel so aus:
Ü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

0

Anzeige



#2 Mitglied ist offline   wiseguy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 23
  • Beigetreten: 15. März 06
  • Reputation: 0

geschrieben 19. April 2006 - 14:46

Zitat

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)".


Okay, das hab ich grad geschafft: fehlte für "null" noch die Beschreibung des Arrays: "null = (char *) malloc (128);"
Und dann konnte ich zumindestens das zuletzt eingelesene aus null mit "printf ("%s\n", null);" lesen.

Aber beim lesen mit "fscanf(inputfile, "%s", &x);" kommt der Segmentation-Fehler immer noch. Also hab ichs mal in Caracter - "%c" - geändert und nun kommt einfach kein Zeichen (Ohne Fehlermeldung) - Also wird so mit der Angabe "fscanf(inputfile, "%c", &x);" wohl einfach nichts gelesen...
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0