Hallo Leute...Meine while schleife tut nicht wirklich das, was sie tun sollte.
Hier der Code:
Beschreibung:
Wenn ich das Programm starte, dann auf "q" drücke, wird es richtig beendet.
Gehe ich aber in eine andere Funktion mit "a" und komme anschließend wieder zurück ins Menü, dann muss ich 2x "q" drücken um das Programm beenden zu können.
Wenn ich dann in 2 Funktionen gehe, dann muss ich 3x "q" drücken um es zu beenden, irgendwie komisch.
Ich weis nicht woran das liegt. Vielleicht könnt ihr mir ja helfen.
In den anderen Funktionen, gebe ich erstmal nur etwas aus, drücke dann eine taste (weil ich da ein getch() ) habe und komme anschließend wieder ins menü() zurück.
Dann habe ich eine Funktion wo ich etwas berechne und auch eingaben habe. Auch dort habe ich überall vor einem scanf() ein fflush(stdin) stehen.
Aber ist immer noch dasselbe problem. Beim erstenmal beendet es sofort. Nur wenn ich in eine andere Funktion gehe, dann wieder ins menü() komme, muss ich 2-3x "q" drücken.
Liegt es sonst am getch()?
Danke.
Gruß
Manda
Hier der Code:
C++:
void menu(FILE *out, test_t *ptr)
{
char auswahl;
int check = 0;
do
{
system("cls");
printf("---------- T --------\n");
printf("\nA - Anzeige");
printf("\nB - Werte");
printf("\nC - Schritte");
printf("\nD - Sonstiges");
printf("\n\n");
printf("------------------------------------------");
printf("\nQ - Beenden des Programms");
printf("\n\n");
printf("------------------------------------------");
printf("\n\nAuswahl: ");
fflush(stdin);
check = scanf("%c", &auswahl);
if(check == 0)
{
printf("Falsche Auswahl!\n");
system("pause");
system("cls");
}
switch(tolower(auswahl))
{
case 'a':
system("cls");
afunktion(out, ptr);
break;
case 'b':
system("cls");
bfunktion(out, ptr);
break;
case 'c':
system("cls");
cfunktion(out, ptr);
break;
case 'd':
system("cls");
dfunktion(out, ptr);
break;
}
}
while(auswahl != 'q');
}
Beschreibung:
Wenn ich das Programm starte, dann auf "q" drücke, wird es richtig beendet.
Gehe ich aber in eine andere Funktion mit "a" und komme anschließend wieder zurück ins Menü, dann muss ich 2x "q" drücken um das Programm beenden zu können.
Wenn ich dann in 2 Funktionen gehe, dann muss ich 3x "q" drücken um es zu beenden, irgendwie komisch.
Ich weis nicht woran das liegt. Vielleicht könnt ihr mir ja helfen.
In den anderen Funktionen, gebe ich erstmal nur etwas aus, drücke dann eine taste (weil ich da ein getch() ) habe und komme anschließend wieder ins menü() zurück.
Dann habe ich eine Funktion wo ich etwas berechne und auch eingaben habe. Auch dort habe ich überall vor einem scanf() ein fflush(stdin) stehen.
Aber ist immer noch dasselbe problem. Beim erstenmal beendet es sofort. Nur wenn ich in eine andere Funktion gehe, dann wieder ins menü() komme, muss ich 2-3x "q" drücken.
Liegt es sonst am getch()?
Danke.
Gruß
Manda