Werte aus *.txt in 2D-Array



  • Hallo,
    ich habe eine *.txt Datei, die N Zeilen und 2 Spalten mit Werten hat, für N= 4 also z.B.

    14.56 2232.75
    234.45 -536.00
    -34.70 24.40
    356.78 478.90

    Jeder Wert hat maximal 4 Stellen vor dem Komma und genau 2 danach.
    Ich benutze folgenden Code:

    #include <stdio.h>
    
    int main()
    {
    int count;
      float array[4][2];
      FILE *fp;
    
      if ((fp = fopen("test.txt","r"))==NULL)
      {
        fprintf(stderr, "Fehler beim Öffnen der Datei.");
        exit(1);
      }
    
      if(fread(array, 4, 8,fp) != 8)
      {
        fprintf(stderr,"Fehler beim Lesen der Datei");
        exit(1);
      }
    
      fclose(fp);
    
      for (count =0; count < 8; count++)
      {
        printf("%f %f\n",array[count][1], array[count][2]);
      }
    return 0;
    }
    

    Allerdings stimmen die eingelesenen Werte nicht. Ich vermute, dass ich die Funktion

    fread( void *buffer, size_t size, size_t count, FILE *stream )
    

    mit falschen Parametern aufrufe. Wie würded ihr das machen?
    Danke



  • fread() liest die Daten binär - d.h. es erwartet die binäre Darstellung eines float-Wertes als (typischerweise) 4-Byte-Datenblock. Du hast deine Werte dort in Textform vorliegen, da mußt du sie (in einer Schleife) per fscanf() einlesen.


Anmelden zum Antworten