String in Datei schreiben



  • Hallo liebe Forum-Gemeinde,

    ich möchte gerne eine Datei erstellen, in der sich zwei Spalten mit Zahlen befinden, die ich mit Hilfe von gnuplot plotten kann. Nun stellt sich mir die Frage, wie ich meine errechneten Werte eben sauber in die Datei bekomme. Ich habe es so versucht

    int tupel ( const int N)
    {
    char dest_filename[MAX]="sinus_N.txt";
    FILE * destination = fopen(dest_filename,"w");
    const double Pi=3.14159265358979323846;
    int i=0;
    double x[MAX],y[MAX];
    
    while (i!=N)
    {
    x[i]=((2*Pi*i)/(N));
    y[i]=sin(x[i]);
    
    fputs(x[i]               ,destination);
    fputs(y[i],destination);
    ++i;
    }
    fclose(destination);
    

    Wie ihr seht bin ich mir total unsicher ob ich fputs hier einfach so verwenden darf (Wie ist das dann formatiert?) Ich blick da gerade bei den vielen Bezeichnungen nicht durch. 😕
    Eine anderer Gedanke um meine Verwirrtheit vielleicht noch ein wenig zu verdeutlichen ist, ob ich meinen x[i] erst nochmal auslesen, also in einen stream packen muss, oder kann ich den direkt in eine Datei schreiben? uff...
    Wär nett, wenn mir dass jemand kurz erklären könnte.
    Vielen Dank

    Gruß



  • Dafür gibts es die printf-Familie.
    Für in eine Datei schreiben ist fprintf zuständig.



  • Nach dem fopen musst du schauen, ob die Datei überhaupt geöffnet werden konnte! 😞
    Ein return hast du auch vergessen. 😞
    Da du die Werte gleich in die Datei schreibst, müssen x und y kein Array sein.

    Du formatierst deinen (Quell-)Text nicht. 😞

    double x,y;
    
      for(i=0;i<=N;i++)
      {
        x = ((2*Pi*i)/(N));
        y = sin(x);
    
        fprintf(destination,"%f %f\n", x, y);
      }
    


  • Hallo DirkB,
    vielen vielen Dank für den Tipp mit der fprintf Familie 👍 . Ich habs jetzt zumindest so hinbekommen, dass es aussieht, wie es soll. Du hast natürlich völlig Recht in Bezug auf die "vergessene Return" und die Kontrolle, ob die Datei überhaupt geöffnet werden konnte. Das sollte anschließend noch dazu kommen, weil ich mich damit generell noch befassen muss. Es sind bei Dateien doch schon einige Kontrollen nötig und die Benutzung von stderr möchte ich mir dann auchnoch aneignen. Hast du vielleicht Erfahrung mit gnuplot und kannst mir sagen, warum ihm die so dargereichte Kost immernoch nicht schmeckt 😕 Vielleicht wegen fehlendem Formatierungszeichen (z.B. 😉 ???

    Achso, was das generelle Formatieren angeht, bin ich schon ein ziemlicher chaot, gibt es da irgendwo eine "Anleitung" zu 😉 ?



  • Du kannst bei gnuplot das Trennzeichen auch einstellen.
    Als Default sind white spaces eingestellt (Space und Tab).

    Ein plot "sinus_N.txt" using 1:2 title 'sinus' sollte bei deinem Beispiel eigentlich reichen.
    Da ich aber nicht weiß was du erwartest und was Gnuplot dir zeigt, kann ich dir da auch nicht helfen.
    (Bist du auch im richtigen Verzeichnis?)

    Zur Formatierung: hast du den Link zu fprintf verfolgt?


Anmelden zum Antworten