C scanf falsche Eingabe

ParadoxTV97

Cadet 2nd Year
Registriert
Nov. 2019
Beiträge
18
Hi, ich hätte eine Frage zu dieser kurzen Methode:

while(re != 1 || re != 2 || re != 3) {

scanf("%d", &re);

if(re==1){
welcomeArt();
}
else if(re==2) {
hangman();
}
else if(re==3){
exit(0);
}
else {
//printf("Invalid Input, you can choose:\n1)Four wins\n2)Hangman\n3) exit game\n");
re = 0;

}
}

Ich möchte gerne, dass man so lange den falsche Tastureingaben machen kann, bis der user entweder 1,2 oder 3 eingibt. D.h, wenn ich z.B. einen Buchstaben eingebe, dann bleibe ich die ganze Zeit in der While Schleife, was ich nicht ganz kapiere.

Mfg
 
Mach da am besten eine "do while Schleife" draus, so dass die Abbruch Bedingung erst am Ende geprüft wird.
Ich vermute mal das re bei dir vorher initialisiert wird (und zwar nicht mit 1,2 oder 3 )und von daher deine Schleife garnicht erst aktiv wird da die Abbruch Bedingung vorher schon erfüllt ist.
 
ParadoxTV97 schrieb:
while(re != 1 || re != 2 || re != 3) {
sollte eigentlich heißen
while(!(re == 1 || re == 2 || re == 3)) {
oder
while(re != 1 && re != 2 && re != 3) {
Die Schleife des TE bricht nie ab, weil re nur einen Wert annehmen kann, also mindestens zwei der drei Bedingungen immer true liefern.
 
Zuletzt bearbeitet: (Ergänzung)
Zurück
Oben