c - 在 while(1) 循环中等待用户输入

标签 c while-loop

我正在尝试在 C 中创建一个循环,其中程序计算 2 个数字的平均值,然后等待用户输入。如果用户输入是“G”,则循环将中断。然而,这目前不起作用,因为它(以一种奇怪的方式)是一个无限循环。

我的代码是:

while(1){
    pogingen++;
    gem = (minimum+maximum)/2;
    printf("%i",gem);
    scanf("%c",&invoer);


    if(invoer=='L'){
        maximum = gem;
    }
    if(invoer=='H'){
        minimum = gem;
    }
    if(invoer=='G'){
        printf("%i",pogingen);
        break;
    }
}

我使用以下值对其进行了测试:最小值 = 1,最大值 = 10。结果将是 5 的无限循环。它甚至不等待用户输入(这是它应该做的。)

预先感谢您查看此内容!

最佳答案

它甚至不等待用户输入(它应该这样做。)
程序没有等待获取输入意味着输入缓冲区中还剩下一些字符。可能来自先前输入的 \n。因此,在读取输入之前清除输入缓冲区。
你可以把,

getchar();
scanf("%c",&invoer);

循环内 scanf() 之前;

关于c - 在 while(1) 循环中等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22782741/

相关文章:

java - 不兼容的类型 : Card cannot be converted to java. lang.String

c++ - 对输入的数字进行排序 - FOR 和 WHILE 之间的区别

C webserver中进程间的跨平台通信方式

c - C 中的段错误。尝试连接命令行参数

PHP If 语句没有正确附加变量

python - 输入一个数字N,然后程序继续输出所有小于N的2的幂。我该怎么继续?

c - 我如何将一个字符与 C 中的不同字母进行比较?

c - alloc_pages() 是否分配 2MB 大页?

c - C 中宏的使用

c++ - 寄存器函数指针