按下一个键后,循环直到键被释放

时间:2016-06-06 10:28:26

标签: c windows visual-c++

我需要等到按下一个键,然后循环(递增计数器)直到它被释放。这是我到目前为止所尝试的:

unsigned long readKeyLength()
{
    unsigned long toReturn = 0;
    int keyPressed;
    while (!_kbhit());
    while (keyPressed = _kbhit())
    {
        fgetc(stdin); // To remove the character from the buffer
        toReturn++;
    }
    return toReturn;
}

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned long keyLength = 0;
    SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0); // Disable line buffering
    printf("Press a key\r\n");
    keyLength = readKeyLength();
    return 0;
}

程序正确等待,直到按下某个键,然后只在while (keyPressed = _kbhit())内循环一次。 我认为这是因为fgetc从输入缓冲区中删除了字符,然后(即使我仍然按下键盘上的某个键)该字符也没有再次放入stdin。

我该如何避免?

0 个答案:

没有答案