有关 getch() 函数的帮助
我想使用 getch 函数来获取字符...所以用户只能输入 Y 或 N 字符..但是 while 循环不起作用...我需要帮助!谢谢
#include <stdio.h>
main(){
char yn = 0;
printf("\n\t\t Save changes? Y or N [ ]\b\b");
yn = getch();
while (yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n') { //loop is not working
yn = getch();
}
if (yn=='Y' || yn=='y') printf("Yehey");
else printf("Exiting!");
getch();
}
I want to use the getch function to get a character... So the user can enter only Y OR N Character.. but the while loop is not working... I need help! Thanks
#include <stdio.h>
main(){
char yn = 0;
printf("\n\t\t Save changes? Y or N [ ]\b\b");
yn = getch();
while (yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n') { //loop is not working
yn = getch();
}
if (yn=='Y' || yn=='y') printf("Yehey");
else printf("Exiting!");
getch();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
while
循环的条件是嵌套的 OR。为了使其工作,您可能需要将它们更改为 AND:The condition for the
while
loop is nested ORs. For it to work you might want to change them into ANDs:while 语句中的逻辑有缺陷,需要逻辑与 (&&) 而不是逻辑或 (||)。
另外,这也是使用 do { ... } while(); 的好地方。
The logic in the while statement is flawed, you need logical AND (&&) instead of logical OR (||).
Also, this would be a good place to use do { ... } while();
你的意思是&&不是||。
变量“yn”是一个字符。为了使该表达式计算结果为 false,该字符必须同时为 Y、y、N 和 n,这是不可能的。
您需要:
You mean && not ||.
The variable "yn" is one character. For that expression to evaluate to false, that character would have to be Y, y, N, and n simultaneously, which is impossible.
You need:
您需要使用 &&而不是 ||这里。假设您输入了“Y”。因此,第一个测试 yn != 'Y' 为假,但第二个测试 yn != 'y' 为真。所以条件为真,因为它们是 OR 运算。这就是为什么它再次进入循环。
You need to use && instead of || here. Say you have entered 'Y'. So 1st test yn != 'Y' is false but 2nd test yn != 'y' is true. So the condition is true, as they are ORed. That's why it is entering the loop again.