Turbo C++ 3.1 上的键盘中断

Keyboard interrupt on Turbo C++ 3.1

提问人:Batman 提问时间:9/15/2022 最后编辑:Andreas WenzelBatman 更新时间:12/2/2022 访问量:134

问:

我叫安德里亚。我在带有 dos 7 的旧 PII 350 MHz 上使用 Turbo C++。我写了一个 while 循环来做一些事情。我必须检查键盘的哪个字母被按下,而没有在循环中检查它,以避免它变慢。有没有办法像在arduino中那样设置中断,仅在按下一个键时停止循环? 我在循环中尝试过使用 bioskey(0),但它减慢了它的速度太多......

C 键盘 中断 DOS Turbo-C++

评论


答:

0赞 Felix An 12/2/2022 #1

您可以使用 中的函数,该函数暂停程序执行,直到按下一个键,并返回按下的键的字符。getch()<conio.h>

例:

#include <stdio.h>
#include <conio.h>

int main()
{
    puts("Hello World, press any key to continue.");
    getch();
    puts("Finished");
    

    return 0;
}

请注意,这是一个非标准库。该库和函数在现代版本的 Visual C++ 中也可用,但该函数称为 _getch()。<conio.h><conio.h>

评论

1赞 Arthur Kalliokoski 12/13/2022
我认为她希望程序继续,直到按下一个键,而 getch() 每次都会阻塞。你要先检查 kbhit(),只有当它说按下了一个键时,你才会调用 getch()。我不知道 kbhit() 的 Turbo C 实现,但 djgpp 只是比较缓冲区中指示击键开始和结束的字节,这非常快。