帮助getch()函数

时间:2010-12-02 11:20:07

标签: c 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();
}

5 个答案:

答案 0 :(得分:5)

yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n'

你需要使用&amp;&amp;而不是||这里。假设您已输入“Y”。所以第一次测试yn!='Y'是假的,但第二次测试yn!='y'是真的。所以条件是正确的,因为它们是ORed。这就是它再次进入循环的原因。

答案 1 :(得分:1)

你的意思是&amp;&amp;不是||。

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

你需要:

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

答案 2 :(得分:1)

while语句中的逻辑存在缺陷,您需要逻辑AND(&amp;&amp;)而不是逻辑OR(||)。

此外,这将是一个使用do {...} while();

的好地方

答案 3 :(得分:1)

while循环的条件是嵌套OR。要使它工作,您可能希望将它们更改为AND:

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

答案 4 :(得分: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
}