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


Anmelden zum Antworten