saftigmelo
Goto Top

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;
}

Content-ID: 534542

Url: https://administrator.de/forum/problem-mit-c-menue-534542.html

Ausgedruckt am: 21.12.2024 um 16:12 Uhr

emeriks
emeriks 12.01.2020 um 15:26:30 Uhr
Goto Top
Hi,
und die Frage ist?

E.
rubberman
rubberman 13.01.2020 um 09:38:46 Uhr
Goto Top
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:
while (getchar() != '\n');

Steffen
SaftigMelo
SaftigMelo 13.01.2020 aktualisiert um 22:25:38 Uhr
Goto Top
1. Und wie kann man bestimmen auf welche Variable es gespeichert wird?
2. Wie kann man stdin löschen?
3. Könntest du mir bitte es mit einem Teil von dem Code erklären?
rubberman
Lösung rubberman 14.01.2020 um 02:05:10 Uhr
Goto Top
1. Und wie kann man bestimmen auf welche Variable es gespeichert wird?
Machst du doch schon.
scanf("%c" ,&inputChar);
In dem Fall ist es die Variable 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
SaftigMelo
SaftigMelo 14.01.2020 um 18:23:16 Uhr
Goto Top
Vielen Dank,
Martin : - )