I tried this code but it's not working and I honestly don't know what is wrong here. I think that this logic would work with numbers, but that appears not to be the case with characters.
Edit: I just realised my mistake and corrected it in an answer.
char choice;
printf("\nAre you ready? (y/n) ");
scanf(" %c", &choice);
while (choice != 'y' || choice != 'n') {
printf("\n\nYou can only answer with y or n!");
scanf(" %c", &choice);
}
if(choice == 'n') {
printf("\nYour answer was no.");
}
else if(choice == 'y') {
printf("\nYour answer was yes.");
}
CodePudding user response:
My bad, the logic is good, I just wrote OR || instead of AND && in while loop.
It should be like this:
while(choice != 'y' && choice != 'n')
CodePudding user response:
First of all, as already said in comments, (chice != 'y' || choice != 'n') will always be true. Logically, you should use && instead of || there.
Moreover, in C when you take any input, you have an additional \n character added to the input byffer. Therefore, when your while loop runs for the first time, it doesn't read a new character, but instead it reads the \n from the previous input.
A way to fix that is to call getchar() after each scanf call.
