Terminverwaltung Datei öffnen und Daten reinschreiben
-
Hallo,
ich will gerade eine Terminverwaltung programmieren und bin bei dem Problem das wenn ich ein Termin gespeichert habe (Das funktioniert wunderbar) und ich das Programm nochmal aufrufe um noch einen termin in die txt Datei zu laden und die Anzahl der Entrys zu aktualisieren, gibt es das Problem das die vorige Anzahl der Entrys auch mit angezgit wird. Ich hab den AT Modus verwendet. gibt es einen Modus der die ganze Text Datei so belässt und nur die erste Zeile ändert?
Also das man die erste Zeile löschen und durch eine neue ersetzen kann?Hier ist der Code
int saveCalendar(TCalendarEntry *Calendar, int *EntryCount) { FILE *Datei; char fname[] = "./Termine.TXT"; Datei = fopen(fname, "at"); if (Datei == NULL) printf("Datei nicht erzeugt/geoeffnet!\n"); else { fprintf(Datei, "Anzahl der Termine: %i\n", EntryCount); fprintf(Datei, "Datum: %02d.%02d.%04d\n", Calendar->Date->Day, Calendar->Date->Month, Calendar->Date->Year); fprintf(Datei, "Uhrzeit: %02d:%02d Uhr\n", Calendar->Time->Hour, Calendar->Time->Minute); fprintf(Datei, "Beschreibung: %s\n", Calendar->Description); fprintf(Datei, "Dauer: %02d:%02d Stunden\n \n", Calendar->Duration->Hour, Calendar->Duration->Minute); fclose(Datei); } }
Lg NoXI
-
Wenn du Dateien im Binärmodus öffnest, kannst du Zeichen überschreiben. Du kannst aber nicht Zeichen mittendrin hinzufügen oder löschen, dies geht nur am Ende. Deine neue erste Zeile muss also genauso lang sein wie die alte.
-
du könntest die jetztige datei umbenennen in vllt old.txt und dann Zeile für Zeile auslesen und in die neue datei mit ursprünglichem namen schreiben. Dabei kannst du dann die erste zeile umändern. Danach löschst du einfach old.txt.
-