!!! Menü !!!
-
Hey,
ich habe ein Programm geschrieben mit ausgelagerten Modulen die über eine Headerdatei zusammengeführt werden. Mein Problem ist jetz, wenn ich vom Hauptbildschirm ein Menü wähle und dort reingehe, wie komm ich wieder raus? Mit "goto" lässt sich hier nicht arbeiten, gibt es vielleicht einen Befehl um wieder ins Hauptmenü zu kommen? Wäre der Code in nur einer Datei enthalten, könnte man mit Schleifen arbeiten, da aber gewisse Funktionen ausgelagert sind, ist dies nicht möglich....Oder gibt es eine Funktion, wo ich nur eine Taste drücken muss, z.B. "#" um wieder ins Hauptmenü zu gelangen?!LG antilope
-
Leider kann sich hier wohl niemand vorstellen, was du eigentlich machen
möchtest.Vielleicht gehst du mal hin und versuchst ein Minimalbeispiel zu kreieren,
um dein Problem näher zu erläutern.Es bleiben z.B. Frage offen wie:
-- Konsolenprogramm oder grafische Oberfläche?
-- etc.Gruß mcr
-
nein ist eine konsolenanwendung.
der benutzer hat anfangs das hauptmenü vor augen mit 5 punkten. über switch und case kann er die einzelnen menüpunkte ansteuern. wählt er einen menüpunkt, so löscht sich der bildschirm und das neue menü erscheint, welches ausgelagert ist. wie kann der benutzer jetzt aus dem neuen menü wieder ins hauptmenü gelangen?
beispiel:
der benutzer wählt im hauptmenü den unterpunkt "1" aus. er gelangt in ein neues menü um zum beispiel eine eingabe zu tätigen, dass eine datei geladen wird. nun soll der benutzer aber wieder ins hauptmenü zurückgelangen.
problem hierbei ist, dass der code nicht in einer datei geschrieben ist, sondern einzelne module gebildet wurden.versteht ihr jetzt was ich meine`?
-
Beispielsweise so (ungetestet und unschön):
int main(void) { int exit = 0; int eingabe = 0; while( !eingabe && !exit ) { fprintf( stderr, "Menue:\n" ); fprintf( stderr, "1 Untermenue\n" ); fprintf( stderr, "0 Exit\n" ); scanf( "%d", eingabe ); if( eingabe == 1 ) { while( eingabe ) { eingabe = 0; fprintf( stderr, "Menue2:\n" ); fprintf( stderr, "1 mach das\n" ); fprintf( stderr, "0 Exit\n" ); scanf( "%d", eingabe ); if( eingabe == 1 ) { funktion1(); eingabe = 0; }; }; } else if( !eingabe ) { exit = 1; }; }; };
-
antilope schrieb:
nein ist eine konsolenanwendung.
der benutzer hat anfangs das hauptmenü vor augen mit 5 punkten. über switch und case kann er die einzelnen menüpunkte ansteuern. wählt er einen menüpunkt, so löscht sich der bildschirm und das neue menü erscheint, welches ausgelagert ist. wie kann der benutzer jetzt aus dem neuen menü wieder ins hauptmenü gelangen?
beispiel:
der benutzer wählt im hauptmenü den unterpunkt "1" aus. er gelangt in ein neues menü um zum beispiel eine eingabe zu tätigen, dass eine datei geladen wird. nun soll der benutzer aber wieder ins hauptmenü zurückgelangen.
problem hierbei ist, dass der code nicht in einer datei geschrieben ist, sondern einzelne module gebildet wurden.versteht ihr jetzt was ich meine`?
Das ist nicht wirklich ein Problem.
Sagen wir mal, wir haben eine function menu(), die das Hauptmenü anzeigt und
von der aus die Untermenüs aufgerufen werden.menu() { solange (nicht abbruch) { schreibe_menu(); a = abfrage(); switch(a) { case 1: submenu1(); break; case 2; submenu2(); break; } } }
Nun kann submenu1() und submenu2() in unterschiedlichen Files stehen.
Sobald du dann mit dem Submenü fertig bist, gelangst du beim Verlassen
der entsprechenden Funktion wieder in die Hauptschleife und damit
ins Hauptmenü, welches dann mit der Funktion schreibe_menu() wieder
auf dem Bildschirm erscheint.Mögliche Bildschirmausgabe:
1 -- Datei laden 2 -- Datei schreiben 3 -- Beenden Auswahl:
In den Submenüs kann dann z.b. noch weitere Informationen, wie Dateiname
etc abgefragt werden.Z.B. könnte submenu1() so aussehen:
submenu1() { a = dateiname_angeben(); datei_lesen(a); return; }
Ich hoffe, dies hilft dir ein wenig weiter.
Gruß mcr
PS: alle Code sind im Pseudocode geschrieben.