📅  最后修改于: 2023-12-03 15:17:08.074000             🧑  作者: Mango
在 C 语言中,要读取键盘输入通常使用 getch()
或 scanf()
等函数。但是他们都会阻塞程序的执行,直到接收到输入结束。如果程序需要在接收输入的同时处理其他事情,那么就需要使用非阻塞式的方法来读取键盘输入。这时,就需要用到 kbhit()
函数。
kbhit()
函数是 C 语言中的一个函数,位于 conio.h
头文件中,用于判断是否有键盘输入。当有键盘输入时,该函数会返回一个非零值;否则,返回零。
使用该函数可以实现非阻塞读取键盘输入的操作。
下面是一个简单的示例程序,用于演示如何使用 kbhit()
函数读取键盘输入。
#include <stdio.h>
#include <conio.h>
int main()
{
while (1)
{
if (kbhit())
{
int ch = getch();
printf("You press %d\n", ch);
}
printf("Processing...\n");
Sleep(100);
}
return 0;
}
在该示例程序中,使用了一个死循环,并在循环内使用 kbhit()
函数判断是否有键盘输入。如果有,则使用 getch()
函数读取输入的字符,并将其打印到屏幕上。
如果没有键盘输入,则打印 "Processing..." 信息,然后使用 Sleep()
函数暂时停止程序的执行 100 毫秒,以防止程序占用过多的 CPU 资源。
kbhit()
函数只能读取到单个键盘按键,不能同时读取多个按键。kbhit()
函数之前,需要先调用 getch()
函数,否则可能出现错误。kbhit()
函数后,需要使用 getch()
函数读取键盘输入,以避免残留输入的情况。