Dateien Ein/Auslesen



  • Hallo, ich habe ein Problem bei der Ausgabe aus Dateien:

    /*
    Eingabe:
        Name: Mustermann
        Vorname: Manfred
        Strasse: Campus-Allee 1
        Ort: 55761 Birkenfeld
    
    */
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void){
    
    FILE* fp;
    char filename[1024];
    char temp[1024];
    
    printf("Filename: ");
    scanf("%s", filename);
    
    fp = fopen(filename, "w+");
    if(fp == NULL){
    
        printf("Die Datei konnte nicht geöffnet werden.");
    } else{
    
    fprintf(fp, "%s", "Name: Mustermann\nVorname: Manfred\nStrasse: Campus-Allee 1\nOrt: 55761 Birkenfeld");
    }
    
    //Bis hier her klappt alles, der Text steht in der Datei
    
    fscanf(fp, "%s", &temp[0]);   //Hier wird der text aus der Datei in temp gepackt
    printf("%s", temp);           //Aber die Ausgabe funktioniert nicht...
    
    fclose(fp);
    return 0;
    
    }
    

    Kann mir jemand sagen, wo mein Fehler liegt? 🙂

    Danke



  • char filename[1024];
    char temp[1024];
    

    Ist ein Bisschen viel für den Stack 😃
    Bei mir crasht das Programm schon bevor es etwas in die Datei schreiben kann.



  • rewind(fp);
    fscanf(fp, "%[^\x1a]", temp);
    


  • Danke, so funktionierts, aber warum?



  • Der (interne) Schreib/Lesezeiger für die Datei steht nach dem fprintf am Ende der Datei.
    Ab da gibt es aber nichts mehr zu Lesen - ist halt das Ende.

    Noch was:
    Du testest zwar , ob die Datei geöffnet werden konnte, gibst dann auch eine Fehlermeldung aus, machst dann aber einfach weiter, als ob die Datei geöffnet werden konnte.

    Bei %s liest scanf nur bis zum nächsten Whitespace (Leerraum).
    fgets wäre eine Alternative.

    Zwei Arrays mit 1024 Byte sollten heutzutage kein Problem mehr darstellen.



  • Jap, danke.


Anmelden zum Antworten