Datei öffnen/schreiben | n00b-Problem :-)



  • Hallo Leute

    folgendes Listing:

    #include <stdio.h>
    
    #define FILENAME "datei.txt"
    #define BUFLEN 80
    
    int main() {
    
        FILE *pfile;
        char buf[BUFLEN];
    
        /* Datei TEST.TXT zum Schreiben öffnen */
        pfile = fopen(FILENAME, "w");
        if(!pfile) {
            printf("Datei konnte nicht geoeffnet werden");
            return 0;
        }
    
        /* Daten in die Datei schreiben */
        fprintf(pfile, "Erste_Zeile\n");
        fprintf(pfile, "Zweite_Zeile\n");
        fprintf(pfile, "Dritte_Zeile\n");
    
        /*Datei schliessen */
        fclose(pfile);
    
        /* Datei zum Lesen oeffnen */
        pfile = fopen(FILENAME, "r");
        if(!pfile) {
            printf("Datei konnte nicht geoeffnet werden");
            return 0;
        }
    
        /* Daten lesen und auf dem Bildschirm ausgeben */
        fscanf(pfile, "%s", buf); printf("%s\n", buf);
        fscanf(pfile, "%s", buf); printf("%s\n", buf);
        fscanf(pfile, "%s", buf); printf("%s\n", buf);
    
        /* Datei schliessen */
        fclose(pfile);
    }
    

    Eigentlich sehr simpel.
    Nur,.. bei mir zeigt es ein seeehr seltsam verhalten...
    Ihr könnts ja einmal kompilieren und selber testen (sitze an einer Windows-Maschine):

    Wenn ich die exe einach anklicke und ausführe (das Dos-Fenster schliesst sich sofort wieder) erstellt es korrekt eine Datei... die Ausgabe sehe ich aber natürlich nicht weil kein "Stopper" drin ist.
    Wenn ich das Programm in die CMD ziehe, damit sich das Fenster nach ausführung nicht gleich schliesst, und ich die Ausgaben sehen kann, gibt es zwar alles richtig aus, es erstellt aber keine Datei..?
    Von wo hat er denn trotzdem die Infos? Und, wieso erstellt er die Datei so nicht? Und, wie könnte ich einen solchen "Stopper" einbauen ala "Drücken Sie eine beliebige Taste um weiter zu fahren"?

    Vielen Dank für allfällige Antworten, Grüsse
    Raff



  • Also bei mir macht der das sowohl unter Linux als auch unter Windows. Der zeigt mir den Text an und erstellt auch eine Datei. Den "Stopper" kannst du mit...

    getchar()
    

    erzwingen....



  • jetzt funtzt es bei mir auch.. 😮

    danke für den tipp mit getchar..

    da habe ich als neuling gleich noch ein paar fragen:

    1. wo finde ich funktionsbeschreibungen wie z.b. für getchar,.. hab gehört unter linux sei man 3 (?) sehr gut...

    2. wenn ich die underlines "_" zwischen den wörtern nicht habe, liest das programm immer nur bis zu einem space... gibt es da ein workarround oder so?

    vielen dank...



  • 1. Guck mal hier:
    http://www.acm.uiuc.edu/webmonkeys/book/c_guide/index.html

    fgets(buf, BUFLEN, pfile); printf("%s", buf);
    


  • dankeschön !


Anmelden zum Antworten