C предлагает пользователю нажать клавишу ввода и выйти после одного нажатия - PullRequest
0 голосов
/ 14 октября 2018

У меня есть программа на C, и я хочу предложить пользователю «нажать ввод, чтобы продолжить», но я продолжаю сталкиваться с необходимостью дважды нажать клавишу ввода.Я хочу обнаружить одно нажатие клавиши ввода.Я видел этот пост Чтение клавиши ввода в цикле в C и пытался

char prev = 0;

while(1)
{
    printf("Press enter to continue \n");
    char c = getchar();

    if(c == '\n' && prev == c)
    {
        break;
    }

    prev = c;
}

, но это не сработало для меня, все равно придется дважды нажать клавишу ввода и дважды печатать подсказку,Тогда я просто попробовал

while (1) {
    printf("press enter to continue \n");
    char prompt;
    prompt = getchar();
    if(prompt == 0x0A){
        break;
    }
}

, но это все равно заставляет меня дважды нажать клавишу ввода, прежде чем двигаться дальше, хотя я получаю подсказку только один раз, так что она движется в правильном направлении.Любой совет о лучшем подходе?

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Вы также можете попробовать это

char ch;
//infinite loop
while(1)
{
printf("Enter any character: ");
//read a single character
ch=fgetc(stdin);
if(ch==0x0A)
{
printf("ENTER KEY is pressed.\n");
break;
}
ch=getchar();
}
0 голосов
/ 15 октября 2018

Вы также можете попробовать это:

#include <stdio.h>
int main()
{
    for(int prompt = 0; prompt != '\n' && prompt != EOF; prompt = getchar())
        printf("press enter to continue \n");
}
0 голосов
/ 14 октября 2018

вместо:

while (1) {
    printf("press enter to continue \n");
    char prompt;
    prompt = getchar();
    if(prompt == 0x0A){
        break;
    }
}

Вы можете попробовать (после очистки stdin

do
{
    printf("press enter to continue \n");
    int prompt = getchar();
} while( prompt != '\n' && prompt != EOF );
...