我可以在没有返回键'n'的情况下读取字符吗? (C)

问题描述 投票:0回答:1

我正在尝试验证用户是否输入了正确的值以及返回值。他应该输入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;
}
c scanf return-value carriage-return
1个回答
0
投票

我相信您根本不需要while循环。

© www.soinside.com 2019 - 2024. All rights reserved.