Problem mit C-Menü
Hallo,
Ich muss ein ähnliches Programm wie 'Worms' programmieren, aber mein Menü wird immer öfters ausgegeben nachdem ich 'b' für die Credits gedrückt hab.
Hier ist der vollständige Code bis jetzt:
#include <stdio.h>
#include <time.h>
int main(){
int begin = 100;
int end = 5000;
int range = end - begin + 1;
int result;
int randFunction;
float high;
float width;
float Time;
float distance;
float deegreAngel;
float speed;
int counter = 1;
float V_y;
float V_x;
char inputChar = 'y';
do{
printf("##MENU##\n");
printf("Drücke die Taste für entsprechende Menüpunkte:\n");
printf("a - Ein neues Spiel starten\n");
printf("b - Über uns\n");
printf("x - Spiel beenden\n");
printf("##\n");
printf("Deine Eingabe [a/b/x]:\n");
scanf("%c" ,&inputChar);
switch(inputChar){
case 'a':
break;
case 'b': printf("\n## Über uns\n");
printf("Wir sind die 1BHIF und wir programmieren unter der Flagge von SC / GG / FA und sind für jede weitere Programmieraufgabe bereit.\n");
printf("Copyright 2019.\n");
printf("Mit einer beliebigen Taste kommst du ins Hauptmenü zurück!\n");
int c;
scanf("%d" ,c = getchar());
break;
case 'x': printf("Auf Wiedersehen, bis zum nächsten Mal.\n");
break;
default: printf("\nUngültige Eingabe\n");
}
}while(inputChar != 'x');
return 0;
}
Ich muss ein ähnliches Programm wie 'Worms' programmieren, aber mein Menü wird immer öfters ausgegeben nachdem ich 'b' für die Credits gedrückt hab.
Hier ist der vollständige Code bis jetzt:
#include <stdio.h>
#include <time.h>
int main(){
int begin = 100;
int end = 5000;
int range = end - begin + 1;
int result;
int randFunction;
float high;
float width;
float Time;
float distance;
float deegreAngel;
float speed;
int counter = 1;
float V_y;
float V_x;
char inputChar = 'y';
do{
printf("##MENU##\n");
printf("Drücke die Taste für entsprechende Menüpunkte:\n");
printf("a - Ein neues Spiel starten\n");
printf("b - Über uns\n");
printf("x - Spiel beenden\n");
printf("##\n");
printf("Deine Eingabe [a/b/x]:\n");
scanf("%c" ,&inputChar);
switch(inputChar){
case 'a':
break;
case 'b': printf("\n## Über uns\n");
printf("Wir sind die 1BHIF und wir programmieren unter der Flagge von SC / GG / FA und sind für jede weitere Programmieraufgabe bereit.\n");
printf("Copyright 2019.\n");
printf("Mit einer beliebigen Taste kommst du ins Hauptmenü zurück!\n");
int c;
scanf("%d" ,c = getchar());
break;
case 'x': printf("Auf Wiedersehen, bis zum nächsten Mal.\n");
break;
default: printf("\nUngültige Eingabe\n");
}
}while(inputChar != 'x');
return 0;
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 534542
Url: https://administrator.de/forum/problem-mit-c-menue-534542.html
Ausgedruckt am: 21.12.2024 um 16:12 Uhr
5 Kommentare
Neuester Kommentar
Benutzereingaben sind tricky. Beachte folgendes:
- Die Eingabefunktionen lesen genau das was spezifiziert ist. In deinem Fall ist das ein einzelnes char in deinem scanf() Aufruf und ebenso ein einzelnes char bei einem getchar() Aufruf (wobei das Konstrukt scanf("%d" ,c = getchar()); natürlich Unsinn ist).
- Bei einer Tastatureingabe entsteht durch das Drücken der Enter Taste immer auch ein '\n'. Das bleibt im stdin stehen bis eine Eingabefunktion es liest.
Ergo musst du nach jeder Tastatureingabe sicherstellen, dass das stdin wirklich leer ist. Quick and dirty:
Steffen
- Die Eingabefunktionen lesen genau das was spezifiziert ist. In deinem Fall ist das ein einzelnes char in deinem scanf() Aufruf und ebenso ein einzelnes char bei einem getchar() Aufruf (wobei das Konstrukt scanf("%d" ,c = getchar()); natürlich Unsinn ist).
- Bei einer Tastatureingabe entsteht durch das Drücken der Enter Taste immer auch ein '\n'. Das bleibt im stdin stehen bis eine Eingabefunktion es liest.
Ergo musst du nach jeder Tastatureingabe sicherstellen, dass das stdin wirklich leer ist. Quick and dirty:
while (getchar() != '\n');
Steffen
1. Und wie kann man bestimmen auf welche Variable es gespeichert wird?
Machst du doch schon.scanf("%c" ,&inputChar);
2. Wie kann man stdin löschen?
Wie bereits geschrieben.while (getchar() != '\n');
3. Könntest du mir bitte es mit einem Teil von dem Code erklären?
scanf("%c", &inputChar);
while (getchar() != '\n');
Steffen