Notizkalendar programmieren. -> Denkanstoß :)
-
Also ich hab mal etwas weitergemacht & ich habe mich für txt-Dateien entscheiden für die Notizen. Je Tag eine .txt-Datei. Bsp: mo_notiz.txt für Montag
So das klappt auch alles soweit mit Speichern und Lesen.
Bloß frage ich mich warum mein Menu - obwohl es am Anfang steht - nicht in der Konsole angezeigt wird. Und warum schließt mein Programm, wenn ich die Montags-Notiz nach dem schreiben lesen will?Noch was: Wenn ich im Menu die 1 bzw 2 wähle möchte ich in ein 2tes Menu gelangen mit Mo - So Aufbau. Realisiere ich das mit einer for Schleife? zB (if x=1) bzw (if x=2)
Code:
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> int menu (void){ int m; printf("\nMenue\n\n"); printf("=======================\n\n"); printf("Waehlen Sie eine Option\n\n"); printf("Notiz abrufen......1\n"); printf("Notiz eintragen....2\n\n"); printf("Ihre Wahl: "); scanf("%d", &m); return m; } int main(void) { FILE *fp; char zeile[80]; // Schreiben Montag if ((fp = fopen("mo_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Montag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); // Lesen Montag if ((fp = fopen("mo_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); system("pause"); exit(1); } printf("Eingegebene Notiz/en fuer Montag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); system("pause"); return 0; // Schreiben Dienstag if ((fp = fopen("di_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Dienstag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); // Schreiben Mittwoch if ((fp = fopen("mi_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Mittwoch eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); // Schreiben Donnerstag if ((fp = fopen("do_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Donnerstag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); // Schreiben Freitag if ((fp = fopen("fr_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Freitag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); // Schreiben Samstag if ((fp = fopen("sa_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Samstag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); // Schreiben Sonntag if ((fp = fopen("so_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); system("pause"); exit(1); } printf("\nNotiz/en fuer Sonntag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); }
-
Du musst deine Funktion menu() auch von main() aus aufrufen.
Nimm statt
gets(zeile)
besserfgets(zeile, 79, stdin)
Statt dem
return 0;
in Zeile 53 solltest du besser einfclose(fp);
machen.
-
Also wenn ich im main() das die menu() FUnktion einfüge gibts en Fehler.
Hab jetzt einfach das menu weggemacht und das Menu so in die Main Funktion ganz oben eingefügt.Und jetzt funktioniert das auch alles und bricht nicht ab dank des fclose(fp);
Bloß steht da nur noch "Bitte drücken sie eine Taste.." xD
Wenn ich noch Fragen habe, meld ich ich mich
Vielen Dank!
-
Buster92 schrieb:
Also wenn ich im main() das die menu() FUnktion einfüge gibts en Fehler.
Und wie heißt der Fehler?
Buster92 schrieb:
Bloß steht da nur noch "Bitte drücken sie eine Taste.." xD
Das kommt vom
system("pause");
-
Also da steht: "Loka Funktionsdefinition sind unzulässig"
Und im Code selbst steht in roter "Schlange" bei "{" "Es wurde ein ; erwartet"
Komisch..
-
Buster92 schrieb:
Also da steht: "Loka Funktionsdefinition sind unzulässig"
Und im Code selbst steht in roter "Schlange" bei "{" "Es wurde ein ; erwartet"
Komisch..Nix Komisch. Der Compiler hat immer Recht.
Lokale Funktionsdefinitionen gibt es in C nicht. Das ist bei Pascal.Du solltest auch nur die Funktion
menu()
aufrufen und nicht in main() definieren (dahinkopieren).Ich beziehe mich jetzt auf dein Code aus deinem Post vom 23.11.2011 um 17:54:58.
Da hätte es gereicht in Zeile 28menu();
hinzuschreiben.Oder damit du deine Auswahl auch zurückbekommst (immer noch Zeile 28):
int Auswahl; Auswahl = menu();
-
So, mein Grundgerüst ist nun fertig.
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *fp; char zeile[80]; //Hauptmenü int wahl; printf("-----Notizkalendar------"); printf("\nMen\x81\n\n"); printf("========================\n\n"); printf("W\x84hlen Sie eine Option\n\n"); printf("Notiz/en abrufen\t1\n"); printf("Notiz/en einf\x81gen\t2\n"); printf("Notiz/en l\x94schen\t3\n\n"); printf("Ihre Wahl: "); scanf("%d", &wahl); switch(wahl){ int tag; case 1: printf("Sie haben Notiz abrufen gew\x84hlt\n"); //Wahl 1 Notizen lesen in Tag //Untermenü Wochentag-Auswahl printf("\nUntermenue\n\n"); printf("=======================\n\n"); printf("Waehlen Sie einen Tag\n\n"); printf("Montag\t1\n"); printf("Dienstag\t2\n"); printf("Mittwoch\t3\n"); printf("Donnerstag\t4\n"); printf("Freitag\t5\n"); printf("Samstag\t6\n"); printf("Sonntag\t7\n"); printf("Ihre Wahl: "); scanf("%d", &tag); switch(tag){ case 1: // Lesen Montag if ((fp = fopen("mo_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Montag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); break; case 2: // Lesen Dienstag if ((fp = fopen("di_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Dienstag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); case 3: // Lesen Mittwoch if ((fp = fopen("mi_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Mittwoch\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); case 4: // Lesen Donnerstag if ((fp = fopen("do_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Donnerstag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); case 5: // Lesen Freitag if ((fp = fopen("fr_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Freitag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); case 6: // Lesen Samstag if ((fp = fopen("sa_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Samstag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); case 7: // Lesen Sonntag if ((fp = fopen("so_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Sonntag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); } break; case 2: printf("Notiz/en eintragen\n\n"); //Wahl 2 Notiz lesen an Tag //Untermenü Wochentag-Auswahl printf("\nUntermenue\n\n"); printf("=======================\n\n"); printf("Wa\x84len Sie eine Option\n\n"); printf("Montag\t1\n"); printf("Dienstag\t2\n"); printf("Mittwoch\t3\n"); printf("Donnerstag\t4\n"); printf("Freitag\t5\n"); printf("Samstag\t6\n"); printf("Sonntag\t7\n"); printf("Ihre Wahl: "); scanf("%d", &tag); switch(tag){ case 1: // Schreiben Montag if ((fp = fopen("mo_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Montag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; case 2: // Schreiben Dienstag if ((fp = fopen("di_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Dienstag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; case 3: // Schreiben Mittwoch if ((fp = fopen("mi_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Mittwoch eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; case 4: // Schreiben Donnerstag if ((fp = fopen("do_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Donnerstag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; case 5: // Schreiben Freitag if ((fp = fopen("fr_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Freitag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; case 6: // Schreiben Samstag if ((fp = fopen("sa_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Samstag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; case 7: // Schreiben Sonntag if ((fp = fopen("so_notiz.txt","w")) == NULL) { printf("\nDatei konnte nicht zum Schreiben geoeffnet werden."); exit(1); } printf("\nNotiz/en fuer Sonntag eingeben (Ende mit @ am Zeilenanfang): \n"); gets(zeile); while (*zeile!='@') { // '\n' klappt meist nicht strcat(zeile,"\n"); fputs(zeile,fp); gets(zeile); } fclose(fp); break; } break; } _getch(); return 0; }
Wenn ich nun aber auf "Notiz lesen" gehe und dann 2-5 auswähle liest das Programm alle Notizen ab dem gewählten Punkt.
Auch ist bei der Auflistung Dienstag-Freitag nicht gleich der anderen Tage.
Aber die Switch Case Funktion müsste doch eig so stimmen...
???
-
Da fehlen die break;
Du hast da für jeden Tag fast den gleichen Code.
In so einem Fall schreibt man dafür Funktionen.
Denen kannst du dann den Filenamen und/oder den Tagesnamen übergeben.
-
Ja okay jetzt klappts.
Ah das dacht ich mir schon -.-
Ich dachte eigentlich darein mit Schleifen zu arbeiten und dann nach jedem ausgegeben Case wieder ins Menü zurückzuspringen.
So würde es ja eigentlich funktionieren?
-
Buster92 schrieb:
Ich dachte eigentlich darein mit Schleifen zu arbeiten und dann nach jedem ausgegeben Case wieder ins Menü zurückzuspringen.
So würde es ja eigentlich funktionieren?
Dein main() ist ja jetzt schon nicht zu überblicken.
Verschachtelte switch lesen sich nicht gut.
-
Nimm statt gets(zeile) besser fgets(zeile, 79, stdin)
interessiert ihn auch nicht
-
Ja das habe ich übersehen @ würmchen
@ DirkB
Ja, das ist mir auch aufgefallen xD
Was gibt es denn für Alternativen?Wie wäre es denn möglich das Lesen einer Datei in EINE Funktion zu packen?
Bzw. das Schreiben einer Datei.
Sprich 2 Funktionen?
Wäre das machbar bzw "klug"?Heißt das also, dass meine bisherige "Arbeit" fürn ***** war xD ?
Weil ich ja dachte mit dem switch case klappt das so alles...Und wie ist es möglich den Inhalt ALLER Dateien aufeinmal zu löschen? Überhaupt möglich?
-
Schau Dir doch mal n paar Codeschnipsel mit dem Stichwort call by reference an.
Du könntest es theoretisch auch in eine einzige Funktion packen und hättest ein Funktionsargument als "Schalter", ob geschrieben oder gelesen werden soll... Möglich ist viel
Und im Grunde ist am Anfang keine Arbeit vergebens. Hauptsache ist, dass man aus eigenen Fehlern lernt und sich weiterentwickelt.
-
So okay
Danke schonmal für den Hinweis.Also wenn cih nach call by reference google finde ich nur so Schnipsel wo Zeichen vertauscht werden. Also mit Zeigern * .
So aber jetzt versteh ich schonmal, dank "galileo computung openbook" wie das mit den Funktion abläuft
Denke so wird es auch übersichtlicher.
Nur halt noch die Frage wie ich das switch case umgehe..?
Also so hab ich das jetzt mal gemacht
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void hauptmenue(void) { //Hauptmenü int wahl; printf("-----Notizkalendar------"); printf("\nMen\x81\n\n"); printf("========================\n\n"); printf("W\x84hlen Sie eine Option\n\n"); printf("Notiz/en abrufen\t1\n"); printf("Notiz/en einf\x81gen\t2\n"); printf("Notiz/en l\x94schen\t3\n"); printf("Programm beenden\t4\n\n"); printf("Ihre Wahl: "); scanf("%d", &wahl); } void untermenue(void) { //Untermenü Wochentag-Auswahl int tag; printf("\nUntermenue\n\n"); printf("=======================\n\n"); printf("Waehlen Sie einen Tag\n\n"); printf("Montag\t1\n"); printf("Dienstag\t2\n"); printf("Mittwoch\t3\n"); printf("Donnerstag\t4\n"); printf("Freitag\t5\n"); printf("Samstag\t6\n"); printf("Sonntag\t7\n"); printf("Ihre Wahl: "); scanf("%d", &tag); } int main(void) { hauptmenue(); untermenue(); _getch(); return 0; }
Edit: Ist es möglich aus
if ((fp = fopen("mo_notiz.txt","r+")) == NULL) { printf("\nDatei konnte nicht zum Lesen geoeffnet werden."); exit(1); } printf("Eingegebene Notiz/en fuer Montag\n"); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp);
diesem Code einen einzelnen zu Machen der dann selbst den Pfad ändert zur Datei?
-
Du hast die Rückgabewerte vergessen.
Das switch-case sollst du nicht umgehen, sondern nur nicht soviel in die case reinschreiben.
Und das Anzeigen der Dateien und einlesen von neuen Notizen gehört auch in jeweils ein Funktion.
int Notizen_anzeigen(char *Dateiname, char *Tag) { if ((fp = fopen("Dateiname","r+")) == NULL) { printf("\nDatei %s fuer %s konnte nicht zum Lesen geoeffnet werden.", Dateiname, Tag); return 1; } printf("Eingegebene Notiz/en fuer %s\n", Tag); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); return 0; }
Und dann
case 1: Notizen_anzeigen("mo_notiz.txt", "Montag"); break; case 2: Notizen_anzeigen("di_notiz.txt", "Dienstag"); break; ....
-
Ohja das sieht doch wunderbar aus! Sowas meinte ich auch xD
Okay, danke=)
Aber warum sagt mir mein Compiler nun in Zeile 71-73
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void hauptmenue(void); void untermenue(void); void notizlesen(void); void notizschreiben(void); FILE *fp; char zeile[80]; void hauptmenue(void) { //Hauptmenü int wahl; printf("-----Notizkalendar------"); printf("\nMen\x81\n\n"); printf("========================\n\n"); printf("W\x84hlen Sie eine Option\n\n"); printf("Notiz/en abrufen\t1\n"); printf("Notiz/en einf\x81gen\t2\n"); printf("Notiz/en l\x94schen\t3\n"); printf("Programm beenden\t4\n\n"); printf("Ihre Wahl: "); scanf("%d", &wahl); switch(wahl){ case 1: untermenue(); case 2: untermenue(); case 3: printf("Notiz/en werden gelöscht"); case 4: printf("Programm wird beendet"); } } void untermenue(void) { //Untermenü Wochentag-Auswahl int Notizen_anzeigen(char *Dateiname, char *Tag); int tag; printf("\nUntermenue\n\n"); printf("=======================\n\n"); printf("Waehlen Sie einen Tag\n\n"); printf("Montag\t1\n"); printf("Dienstag\t2\n"); printf("Mittwoch\t3\n"); printf("Donnerstag\t4\n"); printf("Freitag\t5\n"); printf("Samstag\t6\n"); printf("Sonntag\t7\n"); printf("Ihre Wahl: "); scanf("%d", &tag); switch(tag) { case 1: Notizen_anzeigen("mo_notiz.txt", "Montag"); break; case 2: Notizen_anzeigen("di_notiz.txt", "Dienstag"); break; case 3: Notizen_anzeigen("mo_notiz.txt", "Montag"); break; case 4: Notizen_anzeigen("di_notiz.txt", "Dienstag"); break; case 5: Notizen_anzeigen("mo_notiz.txt", "Montag"); break; case 6: Notizen_anzeigen("di_notiz.txt", "Dienstag"); break; default: printf("FEHLER! - Eingabe korrigieren!\n"); } } void notizlesen(void) { // Lesen int Notizen_anzeigen(char *Dateiname, char *Tag); { if ((fp = fopen("Dateiname","r+")) == NULL) { printf("\nDatei %s fuer %s konnte nicht zum Lesen geoeffnet werden.", Dateiname, Tag); return 1; } printf("Eingegebene Notiz/en fuer %s\n", Tag); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); return 0; } } void notizschreiben(void) { } int main(void) { hauptmenue(); _getch(); return 0; }
nicht definiert wär?
Und bei den returns stimmt der "Rückegabewert nicht mit dem Funtkionstyp überein" ...
Edit: Ok return hauptmenue(); ergibt keinen Fehler. D.h das nach Ausfürhung der Funktion das Programm wieder in die hauptmenue.Funktion springt, richtig?
-
Was soll denn Zeile 68 bzw 66 sein?
Lösche Zeile 66 und 79 und mach das ; aus Zeile 68 weg.
-
Holla die Waldfee...
Ja, ich dachte ich packe das in ne neue Funktion aber so funktioniert es fast.Jetzt sagt der mir aber im Programm, dass sie Notiz/en nicht geöffnet werden können. Hab auch schon die txt Dateien in den Grundornder geschoben - das hat auch nichts gebracht.
Edit: Und iwie erscheint jetzt ständig "DIe Notiz/en werden gelöscht" Woher kommt das?!
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void hauptmenue(void); void untermenue_lesen(void); void untermenue_schreiben(void); FILE *fp; char zeile[80]; void hauptmenue(void) { //Hauptmenü int wahl; printf("-----Notizkalendar------"); printf("\nMen\x81\n\n"); printf("========================\n\n"); printf("W\x84hlen Sie eine Option\n\n"); printf("Notiz/en abrufen\t1\n"); printf("Notiz/en einf\x81gen\t2\n"); printf("Notiz/en l\x94schen\t3\n"); printf("Programm beenden\t4\n\n"); printf("Ihre Wahl: "); scanf("%d", &wahl); switch(wahl){ case 1: untermenue_lesen(); case 2: untermenue_schreiben(); case 3: printf("Notiz/en werden gelöscht"); case 4: printf("Programm wird beendet"); } } void untermenue_lesen(void) { //Untermenü Wochentag-Auswahl int Notizen_anzeigen(char *Dateiname, char *Tag); int tag; printf("\nUntermenue\n\n"); printf("=======================\n\n"); printf("Waehlen Sie einen Tag\n\n"); printf("Montag\t1\n"); printf("Dienstag\t2\n"); printf("Mittwoch\t3\n"); printf("Donnerstag\t4\n"); printf("Freitag\t5\n"); printf("Samstag\t6\n"); printf("Sonntag\t7\n"); printf("Ihre Wahl: "); scanf("%d", &tag); switch(tag) { case 1: Notizen_anzeigen("mo_notiz.txt", "Montag"); break; case 2: Notizen_anzeigen("di_notiz.txt", "Dienstag"); break; case 3: Notizen_anzeigen("mi_notiz.txt", "Montag"); break; case 4: Notizen_anzeigen("do_notiz.txt", "Dienstag"); break; case 5: Notizen_anzeigen("fr_notiz.txt", "Montag"); break; case 6: Notizen_anzeigen("sa_notiz.txt", "Dienstag"); break; case 7: Notizen_anzeigen("so_notiz.txt", "Dienstag"); break; default: printf("FEHLER! - Eingabe korrigieren!\n"); } } // Lesen int Notizen_anzeigen(char *Dateiname, char *Tag) { if ((fp = fopen("Dateiname","r+")) == NULL) { printf("\nDatei %s fuer %s konnte nicht zum Lesen geoeffnet werden.", Dateiname, Tag); return 1; } printf("Eingegebene Notiz/en fuer %s\n", Tag); while (fgets(zeile, 79, fp)) printf("%s", zeile); fclose(fp); return 0; } void untermenue_schreiben(void) { printf("test"); } int main(void) { hauptmenue(); _getch(); return 0; }
-
Die Variable Dateiname darf bei fopen nicht "" stehen. Sorry.
Und wegen "Dateien werden gelöscht":
DirkB schrieb:
Da fehlen die break;
-
Also wenn ich das so mache:
if ((fp = fopen("","r+")) == NULL) ....
liest das Programm auch nichts.
Und wenn ich ein break; nach fclose(fp) einfüge sagt mir der Compiler, dass diese Anweisung nur in einer Schleife oder Schalter verwendet werden darf.
....fclose(fp); break; }