Auslesen einer Datei und Zuweisung in Variablen



  • Hi! Ich habe ein Problem und suche schon länger nach einer Lösung, hab aber bis jetzt nirgens eine gefunden.

    Ich habe ein zwei Datenfiles, die mit einem anderen Programm erzeugt wurden und diese Rohdaten sollen nun weiterverarbeitet werden. Die Datei müsste geöffnet werden und ab der zweiten Zeile (die erste enthält Infos für das Plot-Proggie) einer Zahlen-Variable zugeordnet werden.

    So schaut die Ausgangsdatei aus:

    @g0 type logxy
    0, 1.000000
    1, 1.482541
    2, 1.847146
    3, 2.146859
    4, 2.393655
    5, 2.642647
    6, 2.858895
    7, 3.045622
    8, 3.218482
    9, 3.400736
    10, 3.568462
    ...
    

    Wie kann ich die zwei Werte pro Zeile in ein Array data[t]=Wert speichern(--> die erste Zeile entspräche data[0]=1.000000, die zweite data[1]=1.482541, usw...)
    Ich komm einfach nicht weiter und wäre euch so dankbar, wenn ihr mir helfen könntet.

    Bene



  • Wo ist das Problem? Zeile für Zeile einlesen zb. in einer While Schleife mit fgets() und mit strtok() die einzelnen Token parsen.



  • ja, aber wie kann ich dann ein string in eine Zahlenvariable umwandeln?



  • atof(),atol(),faq,boardsuche



  • Es tut mir echt leid, dass ich das ned vorher gefunden hatte.

    Ich komm hier absolut nicht weiter... Und das Problem ist, dass ich total unter Zeitdruck stehe, d.h. das Proggie muss heute Abend noch fertig werde... *seufz* Also verzeiht mir bitte, wenn ich teils blöde Fragen stelle...

    Ich hab jetzt folgendes und bekomm auch nen output, aber der gibt mir weder alle Zeilen aus, noch die dazugehörigen Werte... 😞

    int main()
    {
      int t;
      int n=0;
      char input_zeile[15];
      char tok[8];
      float input[1000];
      for(t=0; t<1000; t++) {input[t]=0;}
    
      FILE *data_file;
      data_file=fopen("dp_0.644_1000_10000_a.dat","r");
    
      while (fgets(input_zeile, 15, data_file)!=NULL)
      {
       if (n>0) //erste Zeile bleibt unbeachtet
       {
       strtok(input_zeile,", ");
       *tok=(int)strtok(input_zeile,", ");
       input[n]=atof(tok);
       printf("%d, %f \n", n, input[n]);
       }
       n++;
      }
    
      fclose(data_file);
    
    return(0);
    }
    

    Kann mir jemand aus der Patsche helfen? *nettschau*



  • ok, Problem selbst gelöst. Trotzdem danke für die schnellen Antworten 🙂


Anmelden zum Antworten