Desktop verknüpfung mit Zähler



  • Hallo zusammen.
    Ich muss ein programm in C schreiben, welches eine Datei erstellt und da etwas rein schreibt. Soweit bin ich gekommen. Nun will ich eine Desktopverknüpfung. Und jedes mal wenn ich auf diese Verknüpfung drücke, soll in meinem erstellten File gezählt werden. Also beim ersten Klick soll in dem File 1. stehen, beim 2. zwei und so weiter. Wie soll das gehen? Ich habe bis jetzt nur einen Code der "Hallo Du" ins File schreibt.

    Kann mir da jemand helfen?

    CODE:
    -------------------------------------------------

    #include <stdio.h>
    int main (void)
    {

    FILE *datei;
    datei = fopen ("testdatei.txt", "w+");
    if (datei == NULL)
    {
    printf("Fehler beim oeffnen der Datei.");
    return 1;
    }

    fprintf (datei, "Hallo Du");
    fclose (datei);

    return 0;
    }
    ------------------------------------------------

    Jetzt will ich aber anstatt "Hallo Du" ein zähler programmieren. Wie geht das?

    Freundliche Grüsse und Danke



  • Du musst den zuletzt in die Datei geschriebenen Wert erst mal wieder einlesen, dann eins draufaddieren und dann wieder in die Datei schreiben. Beim ersten Mal (wenn die Datei noch nicht existiert bzw. wenn du nicht erfolgreich deinen Wert lesen kannst), schreibst du einfach eine 1.



  • - Wert aus Datei lesen
    - Wert um 1 erhöhen
    - Wert in Datei schreiben

    Wobei hakt's?



  • Übrigens: lesen kannst du beispielsweise mit fscanf machen.



  • Zwischen Lese- und Schreibaktionen auf demselben FILE* muss ein flush passieren (implizit oder explizit), d.h. nach dem Lesen rewind benutzen um zu schreiben und nicht fseek/fsetpos.



  • Vielen Dank!

    Ich habe den Code mal ein wenig abgeändert. Da ich aber noch anfänger bin,
    komme ich nicht weiter. Wäre echt jemand so lieb und hat ein Code beispiel für mich?

    int eins;
    int zaehler;

    eins = 1;

    fprintf (datei, "%i", eins);
    fclose (datei);

    fscanf (datei, "%i", eins);
    zaehler = datei + eins;
    fprintf (datei, "%i", plus);
    fclose (datei);



  • Liest du eigentlich die Hinweise an dich?
    Nein, definitiv nicht, denn dein Code ist Unsinn und hält sich auch in seiner präsentierten Form nicht an die Forumsregeln.



  • Schön wären vollständige Programme zwischen Code-Tags.
    Das bekommt man recht einfach, indem du den Quelltext aus deinem Editor hierer kopierst, nochmal mit der Maus markierst und dann auf den C-Button unter dem 😡 klickst.

    Wenn du die Datei mit fclose geschlossen hast, darfst du darauf nicht weiter zugreifen. Du musst erst wieder ein fopen machen.
    Allerdings sollte man ein fclose erst dann machen, wenn man erstmal nicht mehr mit der Datei arbeiten möchte.

    fscanf unterscheidet sich nicht groß von scanf. Vor allem braucht es auch Pointer auf die Variablen, in denen die Werte abgelegt werden sollen.



  • Das ist mein vollständiger Code bis jetzt..
    Ich verstehe nicht genau was du meinst..
    Kannst du mir echt nochmals auf die Sprünge helfen? 😮

    #include <stdio.h>
    int main (void)
    {
    
      FILE *datei;
      datei = fopen ("testdatei.txt", "w+");
      if (datei == NULL)
      {
        printf("Fehler beim oeffnen der Datei.");
        return 1;
      }
    
      int eins;
      int zaehler;
    
      eins = 1;
    
      fprintf (datei, "%i", eins);
      fclose (datei);
    
      fopen(datei);
      fscanf (datei, "%i", eins);
      zaehler = datei + eins;
      fprintf (datei, "%i", plus);
      fclose (datei);
    
      return 0;
    }
    


  • Du kannst ja mal bei http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/ was über fscanf nachlesen.
    Schau dir auch hmal scanf und sscanf an.
    Gerade die Beispiele wo integer oder float eingelesen werden. Da sollte dir wa am Variablennamen auffallen.

    Zeile 7 und 23 sollen doch wohl da selbe machen.
    Warum sehen sie dann so komplett unterschiedlich aus?

    Was willst du mit Zeile 25 bezwecken?

    Beseitige doch erstmal die Compilerfehler und die Warnungen.


Anmelden zum Antworten