在C中的是/否之后按Enter继续

时间:2011-10-12 02:39:16

标签: c input enter

这里的新程序员只有一些小的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;
}

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 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,我应该是1character应该是'y'或'Y' 对于案例2,我应该是3string应该是'是' 任何其他情况都不正确。这是代码:

#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;
}

我建议使用这样的东西。