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ß