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.