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-Key: 534542

Url: https://administrator.de/contentid/534542

Printed on: April 20, 2024 at 07:04 o'clock

Member: emeriks
emeriks Jan 12, 2020 at 14:26:30 (UTC)
Goto Top
Hi,
und die Frage ist?

E.
Member: rubberman
rubberman Jan 13, 2020 at 08:38:46 (UTC)
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
Member: SaftigMelo
SaftigMelo Jan 13, 2020 updated at 21:25:38 (UTC)
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?
Member: rubberman
Solution rubberman Jan 14, 2020 at 01:05:10 (UTC)
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
Member: SaftigMelo
SaftigMelo Jan 14, 2020 at 17:23:16 (UTC)
Goto Top
Vielen Dank,
Martin : - )