Fehler bei Datei schreiben



  • Habe folgendes prog abgetippt. beim ersten man klappte es noch,nur hab ich bei name ein leerzeichen eingetippt und es wurde nur der vorname abgespeichert...

    doch seitdem kommt nur ne windows fehlermeldung,nachdem ich nach er alterseingabe return drücke... was kann das sein ?

    #include <stdio.h>  
    #include <string.h>
    #include <stdlib.h>
    
    // Struktur für einen Eintrag festlegen
    
    struct TelefonEintrag
    {
        char name[40];
        int alter;
    }Telefonliste;            
    
    int main()
    {
        char ch='n';
        char Dateiname[62];
    
        FILE *pfile;
    
        // Name der datei entgegen nehmen
        printf("\n Geben sie den Dateinamen ein : ");
        gets(Dateiname);
    
        // Datei zum Schreiben öffnen
        if ((pfile = fopen(Dateiname, "w"))==NULL)
        {
            printf ("Fehler beim öffnen der datei\n");
            exit(0);
        }
    
        // Daten eingeben und abspeichern
        do
        {
            printf("\n Name eingeben :");
            scanf("%s", Telefonliste.name);
            printf("\n Alter eingeben :");
            scanf("%d", Telefonliste.alter);
    
        // Strukturvariable telefonliste speichern
        fwrite(&Telefonliste, sizeof(Telefonliste),1,pfile);
    
        // Tastatureingabepuffer leeren
        fflush(stdin);
    
        //Schleife wiederholen , solange j oder J
        printf("\n Wollen Sie einen weiteren Datensatz eintragen ? (J/N)");
        ch=getchar();
        }
        while ((ch =='j') || (ch == 'J'));
    
        fclose(pfile);
    
        printf("\n\n Datensätze wurden erfolgreich abgespeichert.");
    }
    


  • Wie wärs denn mal mit der Fehlermeldung?
    Das hilft nämlich beim suchen des Fehlers.



  • kleines windows pop-up-Fehlermeldung:

    Die Anweisung in "0x77c10d52" verweist auf Speicher in "0x000000000". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden.

    Klicken Sie auf Ok..... bla bla...



  • also das prog geht jetzt,hate ein "&" vor telefonliste.alter vergessen, allerdings speichert er das alte rnicht als zahl sondern wohl als ascii wert ab,was muss ich da machen ?



  • scanf("%d", Telefonliste.alter);
    

    Da fehlt ein & vor Telefonliste.alter. scanf will die Adresse einer Variablen, mit dem Wert kann es nichts anfangen.



  • hab ich jetzt auch, bzw. hab ich das alter auch als char variable mit 2 zeichen maximal und lasse es über %s einlesen.

    Bekomme ich bei der art von einlesen und in datei abspeichern kein zeilenumbruch hin,das nach jedem eintrag in die neue zeile in der txt-datei geschrieben wird ?



  • wenn du die Einträge in deiner Struktur noch zusätzlich formatieren willst kannst du nicht mehr
    mit fwrite arbeiten, sondern mußt jedes Element der Struktur selber in die Datei schreiben. Dazu eignet sich der fprintf Befehl.

    Viel Spaß


Anmelden zum Antworten