3 spalten ascii datei einlesen c
-
DirkB schrieb:
gigg schrieb:
Bei printf() ist %E double, aber nicht float.
Nein!
%e (und auch %f und %g) steht bei printf für double und float.
Der Compiler wandelt das float automatisch in double um.Bei scanf ist es nicht so. Das ist auch eine ganz andere Funktion.
Sorry. Bei K&R steht im Referenzteil nur double.
-
sorry für die schlechte Fehlerbeschreibung, ich hab halt das Problem, dass ich keinen Fehler sehe.
Letztendlich wird im obigen Code dieser Teil:
/* Teil 2: Auswerten */ printf("%d Werte gefunden\n", N); for(i=0; i<N; i++)printf(" %E %E %E ", s1[i], s2[i], s3[i]); return 0;
nichts ausgegeben. Ich erwarte, dass meine Daten die eingelesen werden Zum Einen ausgegeben werden (pro Zeile) und zum Anderen die Anzahl der Zeilen die eingelesen wurden.
Ich möchte damit zeigen, dass die Daten in den Arrays abegspeichert sind um später weitere Berechnungen mit den Daten durch führen zu können.
-
Welchen Startwert hat N, ist N initialisiert? (siehe Beitrag von aki ni saki)
-
Wenn die Ausgabe ".. Werte gefunden" nicht kommt, hängt dein Programm in der while-Schleife fest.
Was passiert denn überhaupt?
Blinkt der Cursor?
Verschwindet das Fenster?
-
N = 0;
ich möchte letztendlich die eigelesenen Werte in Arrays speichern. Also in s1, s2 und s3.
mit dem Teil
while(fgets(zeile, sizeof(zeile), fp)) { float gx, gy, gz; if(sscanf(zeile, " %E %E %E", &gx, &gy, &gz) == 3) { s1[N] = gx; s2[N] = gy; s3[N] = gz; N++; printf("Lese Zeile %d: <%s>", N, zeile); } }
werden die Zeilen und auch die Werte ausgegeben das klappt ganz gut. Als nächstes möchte ich die Werte aus den Arrays heraus ausgeben.......um zu zeigen, dass ich mit diesen Arrays weiter rechnen kann....
Sorry wenn das nicht klar rüber kommt...bin wie gesagt neu in der Programmierwelt...
Danke für eure Hilfe!!!
-
@ DirkB
Ich denke du könntest recht haben. Ich arbeite mit eclipse.
Es folgt nur folgende Ausgabe:
Lese test.txt
dann folgt nichts mehr.
füge ich noch
printf("Lese Zeile %d: <%s>", N, zeile);
in die while shleife ein, so wird die zeile und auch die Werte aus der entsprechenden Zeile ausgegeben....somit denke ich eben das du recht hast....
-
Jetzt muss ich nur noch wissen wie ich aus der while schleife raus komme...
-
fgets gibt ein NULL zurück, wenn das Ende der Datei erreicht wurde: http://www.cplusplus.com/reference/clibrary/cstdio/fgets/
Nimm das printf mal aus dem if-Zweig raus, lass es aber in der while-Schleife (vertausche Zeile 11 und 12 in dem Beispiel).
-
Vielleicht hat ja deine Datei mehr als 1024 Zeilen ... die Arraygrenze solltest du jedenfalls im Schleifendurchlauf kontrollieren.
-
@Josef,
DANKE! So ein Dummer Fehler. Sorry an alle und Danke für die Mühe!!
Beste Grüße!