Der Benutzer hat nur zwei Möglichkeiten "a" oder "b", wenn die Benutzereingabe nicht "a" oder "b" ist, sollte eine Fehlermeldung sie nur zur Eingabe von "a" oder "" auffordern b '.Eingabevalidierung: Überprüfung mehrerer Werte
DAS GUTE: Ich gebe den Buchstaben 'a' ein und es umgeht die While-Schleife.
DIE SCHLECHTE: Wenn ich 'b' eingeben, wird die While-Schleife nicht umgangen?
Irgendwelche Vorschläge zur Behebung dieses Problems?
#include <stdio.h>
int main(void)
{
char c;
printf("enter a or b to make it out!\n");
//loop if answer is NOT a or b
while ((c = getchar() != 'a') && (c = getchar() != 'b'))
{
//let the user know there has been a problem!
printf("That value is invalid");
printf("\nPlease enter a or b:\n");
fseek(stdin,0,SEEK_END);
}
printf("You made it out!");
return 0;
}
Sie zwei Zeichen lesen, denn Sie rufen getchar' zweimal. Am Ende nimmst du auch das Newline-Zeichen '\ n'. Wenn Sie also a eingeben, wird 'c = getchar()! = 'A'' zu false ausgewertet und die Schleife wird übersprungen (ich denke, dass die zweite Bedingung aufgrund von Kurzschlüssen übersprungen wird). Aber wenn Sie b, "b"! = "A" und "\ n"! = "B" eingeben, tritt es in die while-Schleife ein. Außerdem bin ich ziemlich sicher, dass dies als 'c = (getchar()! = 'A') ausgeführt wird, was vermutlich nicht das ist, was Sie erwarten. –
Danke Millie! –