getch()函数的帮助

4

我想使用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();
}

1
解释问题出在哪里,或者你已经为解决这个问题做了什么努力将会很有帮助。 - wj32
1
表达式 x != A || x != B 将始终为真。 x 只有一个值 :) - ruslik
5个回答

5
yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n'

在这里,您需要使用&&而不是||。假设您输入了“Y”。因此,第一个测试yn!='Y'为false,但第二个测试yn!='y'为true。因为它们被ORed,所以条件为真。这就是为什么它会再次进入循环的原因。


1

while语句中的逻辑存在缺陷,你需要使用逻辑与(&&)而不是逻辑或(||)。

此外,在这里使用do { ... } while()会是一个好选择。


1
//use of getch() function
#include<iostream.h>
#include<conio.h>
//main function starts excuition
viod main()
{
clrscr();//to clear the screen
//veriable decleration
int a;//Any integer
int b;//Any integer
int c;//Any integer
cout<<"Enter the first number\n";//prompt
cin>>a;//read the integer
cout<<"Enter the second number\n";//prompt
cin>>b;//read integer
c = a + b;//the value of xum of "a" and "b" is assigned to "c"
cout<<"sum is\t"<<c;
getch();//to stay the screen
}

1

你的意思是使用 && 而不是 ||。

变量 "yn" 是一个字符。为了使表达式的值为 false,该字符必须同时为 Y、y、N 和 n,这是不可能的。

你需要:

while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')

别人毫无理由地给我点了一个-1。虽然我认为我知道是谁干的。 - AlastairG

1

while循环的条件是嵌套的OR语句。为了使其正常工作,您可能需要将它们改为AND语句:

do {
   yn = getch()
} while(yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接