devc++这么让getch();不会提前检测
时间: 2023-10-19 11:34:19 浏览: 225
在 Dev-C++ 编译器中,如果使用 `getch()` 函数来等待用户输入,程序会一直等待用户的输入,直到用户按下一个键为止。如果用户在一定时间内没有按下任何键,程序就会继续执行。
如果你想在一定时间内等待用户的输入,可以使用 `kbhit()` 函数来检测是否有键盘输入。该函数位于 `conio.h` 头文件中,需要在程序中包含该头文件才能使用。
以下是一个示例代码,可以演示如何使用 `kbhit()` 函数来检测是否有键盘输入:
```c++
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main() {
int i = 0;
clock_t start = clock(); // 获取程序开始时间
printf("Press any key within 5 seconds...\n");
while (i < 5) { // 循环等待用户输入,最多等待 5 秒钟
if (kbhit()) { // 检测是否有键盘输入
getch(); // 获取用户输入的键值
printf("You pressed a key!\n");
break; // 结束循环
}
if ((clock() - start) / CLOCKS_PER_SEC > 1) { // 如果超过 1 秒钟
printf("%d second(s) passed...\n", i + 1);
i++; // 计时器加 1
start = clock(); // 重新计时
}
}
if (i == 5) { // 如果超过 5 秒钟
printf("Time out!\n");
}
return 0;
}
```
在上面的示例代码中,程序会循环等待用户输入,最多等待 5 秒钟。每隔 1 秒钟会输出一次计时器的值,提示用户还剩下多少时间。如果用户在规定时间内按下键,程序会输出 "You pressed a key!";如果超过规定时间,程序会输出 "Time out!"。
阅读全文