添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在我们平时控制台程序的编写过程中,一般情况下都是需要暂停控制台界面,等待用户输入数据之后,程序才会继续运行下去。但是某些情况下,我们希望在循环在用户输入一个按键时才响应特定程序。
常规做法是使用多线程, 如: 子线程中执行任务, 主线程线程中检测用户输入, 然后根据用户输入, 来控制工作线程状态;
如果仅仅是快速做测试, 可以使用C语言中的kbhit()和getch()来实现上述功能.
个人理解: kbhit()内部也是封装了一个线程来检测用户键盘输入.

#include <iostream>
#include <conio.h>  // _kbhit(), _getch()
#include <windows.h>
int main()
    int counter = 0;
    char exitflag = '\0';
    while (1)
        std::cout << ++counter << ": hello error!\n";
        Sleep(50);
        //函数名:kbhit()
        //功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
        if (_kbhit())
            // 函数名: getch()
            // 功能及返回值: 从键盘上读取到的字符
            exitflag = _getch();
            if (exitflag == 'q' || exitflag == 'Q')
                std::cout << "用户输入:" << exitflag << ", 退出循环\n";
                break;
    std::cout << "已经退出了循环\n";
    return 0;
// 注:Windows下不推荐使用POSIX。建议使用使用标准C++相似的名称:_kbhit(), _getch()

参考文章:

关于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 () 获取不到键盘时,需要逐一排查可能的原因,并采取相应的措施解决问题。同时,也可以尝试 使用 其他方法或函数来获取 键盘输入 ,确保程序可以正常运行。