Frage zu Datei-auslesen
-
Hallo Gemeinde!
Habe ein Problem beim auslesen einer Datei. Und zwar soll in jeder Zeile ein Punkt in einem 2D-Koordinatensystem stehen, der durch eine X/Y Koordinate beschrieben ist, etwa so:
120,60
30,40
etc.Wie kann ich nun bis zum Komma bzw. / den jeweiligen Wert in X und das nachfolgende in eine Y Koordibate speichern? Mit fseek und fgets kann man da wohl nix mit anfangen oder?
Ciao
Frank
-
fscanf
-
Danke. Habe mal so etwas gebastelt aber es klappt irgendwie nicht. Der Compiler meldet zwar keinen Fehler, aber das Programm lässt sich nicht ausführen:
while(fscanf(datei,"%f %f\n",x[i],y[i]) != EOF)
{
printf("%f %f\n",x[i],y[i]);
i++;
}Damit soll er ja Zeile für Zeile jeweils X[i] und Y[i] einlesen bis zum Ende der Datei. Wo ist da der Fehler?
Ciao
Frank
-
fscanf() returnt kein EOF, sondern die anzahl der gespeicherten werte.
tipp:
feof() // dateiende
ferror() // beliebiger fehler
fscanf(...) == 0 // oder...
!fscanf(...) // irgendwas konnte nicht gelesen werden (dateiende oder datei falsch formatiert)ausserdem will jedes scanf() pointer:
fscanf(datei, "%f %f\n", **&**x[i], **&**y[i])wenn du zwischen den beiden werten ein komma hast, dann muss das im formatstring auch stehen.
deine gleitkommazahlen muessen einen dezimalpunkt haben, kein komma wie im deutschen.%f isr float
%lf ist double
(iirc)
-
auf gut deutsch:
while(fscanf(datei,"%f , %f\n",&x[i],&y[i]) == 2) { printf("%f, %f\n",x[i],y[i]); i++; }
-
in der heutigen zeit wird einem aber auch jede denkaufgabe abgenommen...