在我们平时控制台程序的编写过程中,一般情况下都是需要暂停控制台界面,等待用户输入数据之后,程序才会继续运行下去。但是某些情况下,我们希望在循环在用户输入一个按键时才响应特定程序。
常规做法是使用多线程, 如: 子线程中执行任务, 主线程线程中检测用户输入, 然后根据用户输入, 来控制工作线程状态;
如果仅仅是快速做测试, 可以使用C语言中的kbhit()和getch()来实现上述功能.
个人理解: kbhit()内部也是封装了一个线程来检测用户键盘输入.
#include <iostream>
#include <conio.h>
#include <windows.h>
int main()
int counter = 0;
char exitflag = '\0';
while (1)
std::cout << ++counter << ": hello error!\n";
Sleep(50);
if (_kbhit())
exitflag = _getch();
if (exitflag == 'q' || exitflag == 'Q')
std::cout << "用户输入:" << exitflag << ", 退出循环\n";
break;
std::cout << "已经退出了循环\n";
return 0;
参考文章:
关于kbhit函数与延时函数使用
百度百科 - kbhit
kbhit用法
前言在我们平时控制台程序的编写过程中,一般情况下都是需要暂停控制台界面,等待用户输入数据之后,程序才会继续运行下去。但是某些情况下,我们希望在循环在用户输入一个按键时才响应特定程序。 常规做法是使用多线程, 如: 子线程中执行任务, 主线程线程中检测用户输入, 然后根据用户输入, 来控制工作线程状态; 如果仅仅是快速做测试, 可以使用C语言中的kbhit()和getch()来实现上述功能. 个
当stdin流被重定向到文件或管道时,只能获取
输入
源文本,无法再用它读取
用户
交互
输入
。
要实现stdin
接收
输入
并利用console作为
用户
交互,需要
使用
特殊的借口从键盘,而非标准
输入
,直接读取
用户
输入
。python标准库msvcrt模块提供了该功能。
控制
输入
输出( console I/O )
msvcrt.put
ch
(
ch
ar) 用于没有缓存地输出一个字节型
ch
ar,且不会...
kbhit
()与get
ch
()或_
kbhit
()与_get
ch
(),加下划线是以前的写法,现在两种方法都可以。
两个函数在头文件conio.h中。
kbhit
()函数用途: 检查当前是否有
键盘输入
,若有则返回一个非0值,否则返回0。
get
ch
()函数用途:从控制台读取一个字符,但不显示在屏幕上。
下面的程序达成的效果是当你敲击方向键的时候,在屏幕上显示出你敲击的方向键的名称。
#include<stdio.h>
#include<conio.h>
int main()
int _
kbhit
( void );
如果在调用该函数时,有按键被按下,则返回一个非零值,否则该函数的返回值是0。需要注意的是,该函数是一个非
阻塞
函数,不管有没有按键被按下,该函数都会立即返回。_khbit()函数一般与_get
ch
()函数与get
ch
e()函数组合
使用
获取按键信息。
2 _...
_get
ch
():
如果想知道按下了什么键,应该用_get
ch
()来获取(键值已经
输入
缓冲区,_get
ch
从缓冲区中取得而非再从
键盘输入
)
函数名:_get
ch
()
get
ch
()的功能及返回值同上;
包含头文件: include <conio.h>
1.
kbhit
()_函数
kbhit
()函数的作用是检查控制台窗口的按键是否被按下。如果在调用函数时,有按键被按下,则返回值为一个非0的值,否则该函数的返回值是0。
kbhit
()函数一般与get
ch
()函数和get
ch
e()函数组合
使用
获得按键信息。
2.get
ch
()函数
get
ch
()函数的作用是从控制台中获取
输入
的字符,在获取
输入
的字符之后,并不会在控制台中显示该字符。该函数的返回值是获取到的字符,需要注意的是,get
ch
()函数直到有字符的
输入
时才会返回,所以该函数不会返回错误值。
在用Visual
近日在工作中,接手一个项目,程序运行起来后偶发性间隔几个小时或几天就会出现如下(图1, 图2)的”xx程序已停止工作”的提示窗口,这时需要
用户
手动点击”关闭程序”按钮,进程才会退出。
当然最好的解决办法就是找出程序中导致”程序错误”的原因,但由于对接手的项目不是很熟悉,再加上时间紧迫,难以在短时间找到问题原因,于是给此程序添加一个”守护程序”(即: 检测到
如果
kbhit
() 获取不到键盘,可能有以下几个原因:
1. 键盘驱动错误:可能是键盘驱动出现了问题,导致程序无法正常获取
键盘输入
。这种情况下,可以尝试更新键盘驱动或者重启电脑再次尝试。
2. 程序错误:有可能是程序本身的问题导致
kbhit
() 无法正常获取
键盘输入
。这时可以通过检查程序代码或者调试来确认问题所在。
3. 操作系统权限问题:有些操作系统可能限制了程序对
键盘输入
的访问权限,导致
kbhit
() 无法正常工作。这种情况下,可以尝试以管理员权限运行程序或者修改操作系统设置来解决。
总之,当
kbhit
() 获取不到键盘时,需要逐一排查可能的原因,并采取相应的措施解决问题。同时,也可以尝试
使用
其他方法或函数来获取
键盘输入
,确保程序可以正常运行。