我需要等到按下一个键,然后循环(递增计数器)直到它被释放。这是我到目前为止所尝试的:
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。
我该如何避免?