Могу ли я читать символы без клавиши возврата «n»? (C) - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь проверить, вводит ли пользователь правильное значение с возвращаемыми значениями. Он должен ввести четное число от 0 до 100.

Думаю, я правильно понял, но теперь моя проблема в том, что пользователь должен дважды нажать клавишу «Enter», чтобы завершить функцию scanf.

Есть ли у меня еще одна возможность избежать этого от пользователя?

Вот код, который я написал:

#include <stdio.h>
#include <windows.h> 

int main( void )
{
   int ok, input = -1;
   char c;

   while(input < 1 || input > 100 || input%2 != 0) {      //repeat loop if Input is not even or betwenn 0 and 100
       printf("Enter an odd number between 1 und 100: ");
       int ok = scanf("%d%c", &input, &c);                //Input is correct if ok = 2 and c = 10'\n'

       while((c = getchar()) != '\n' && c != EOF) {}      //this loop empties the input buffer to avoid infinite loops if users enters a character         
   }                                                                        

   printf("You habe chosen the number %d ", input);

   getchar(); 
   return 0;
}

1 Ответ

0 голосов
/ 17 июня 2020

Я считаю, что второй вам не нужен, а l oop вообще.

Как было предложено выше, scanf() ждет однократного нажатия клавиши ввода, а затем getchar() ждет после.

Если вы удалите второй, пока l oop, код должен работать правильно и требовать нажатия клавиши ввода только один раз.

Надеюсь, это поможет!

...