无需按Enter即可从键盘读取输入

use*_*185 2 c prompt input delay

可能重复:
C/C++:从标准输入中捕获字符而不等待按下输入
如何在C中的Linux上进行非阻塞控制台I/O?

我试图用C语言编写一个程序,它处于一个恒定的循环中,但我需要能够在每个循环开始时从键盘接收输入,或者如果没有按下键则继续.

getchar()和_getch()都不够,因为它们都在等待输入.如果有人知道类似于_getch但不等待输入的函数,那将非常感激.

Mik*_*ike 5

没有C标准的方法来做你想做的事情(在没有用户点击输入的情况下从键盘捕捉键盘),你必须去特定于平台.<conio.h>应该在Windows上拥有你需要的东西,你需要curses在Linux上才能得到它.(我怀疑curses也可以在Mac上运行,但不要引用我的话)

在Windows kbhit()上不等待任何输入,如果在您进行测试的瞬间按下了某个键,它就会返回.如果您需要知道密钥是什么,那么您可以将其与getch()

就像是:

while(countdown++ <= 1000){  // give a second to hit something
    if(b=kbhit())            // if the user presses a key
        break;               // leave the loop early
    Sleep(1);                // else, sleep for 1 ms and try again
}
if (b != 0)          // if something was pressed
    printf("The key was %d\n", getch());
Run Code Online (Sandbox Code Playgroud)