这里的新程序员只有一些小的Java经验,尝试用C语言写一些东西。我想问某人是/否问题,根据他们的答案做某事,然后让他们按回车继续。我有两个问题:
1。)我无法让程序接受'y','Y'或“Yes”作为答案。我可以接受一个,但不是全部三个。 “逻辑OR”运算符||不工作。 2.)我不能让它停在“按Enter继续”而没有两个“Flush”命令:
while (getchar() != '\n');
我已经尝试使用的代码如下:
int main (int argc, const char * argv[]) {
printf("Would you like to continue? Please press y or n.\n");
if(getchar() == 'y'){
printf("You pressed yes! Continuing...");
}
else{
printf("Pressed no instead of yes.");
}
//flush commands go here
printf("\nPress ENTER to continue...");
if(getchar()=='\n'){
printf("\nGood work!");
}else{
printf("Didn't hit ENTER...");
return 0;
}
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:1)
首先,您可能希望保存第一个getchar()
的结果以测试每个可能的值
例如
int c=getchar();
if(c=='y' || c=='Y')
....
“输入”部分跳过第二次测试的原因是因为当您键入“y”或“n”时按Enter键发送输入 - \n
仍然在缓冲区中并且已拉出下次致电getchar()
答案 1 :(得分:1)
假设您在* nix环境中工作, 您可以创建一个缓冲区来一个接一个地存储传入的字符。 你有两种情况:
1. Single character input
2. 3 character String
对于所有其他情况,您可以盲目地说输入不正常!
对于案例1,我应该是1
而character
应该是'y'或'Y'
对于案例2,我应该是3
而string
应该是'是'
任何其他情况都不正确。这是代码:
#include<stdio.h>
int main()
{
char ch[3];
char c;
int i=0;
while(((c=getchar())!='\n')){
ch[i]=c;
i++;
}
ch[i]='\0';
if (i==1)
if (ch[0]=='Y'||ch[0]=='y')
printf("OK");
else
printf("Not OK");
else if(i==3)
if (strcmp(ch,"Yes")==0)
printf("OK");
else
printf("Not OK");
else
printf("NOT OK");
return 0;
}
我建议使用这样的东西。