0

我在互联网上看到以下代码

DWORD qThreadID;
HANDLE hThread = CreateThread(0, 0, ThreadFn, &uiCounter, 0, &qThreadID);

// Loop until the user enters 'q'
char cChar = ' ';
while (cChar != 'q') {
    cout << uiCounter << endl;
    cChar = (char)getchar();
}

按键事件“Enter”是如何工作的?(当我调试它时,除了按“Enter”之外没有其他按键功能起作用)谢谢

4

3 回答 3

3

getchar()从库和操作系统中缓冲的标准输入读取。在输入输入之前,通常的操作系统不会从控制台设备上的读取返回;它们支持命令行编辑,并且需要回车键来完成输入。

于 2012-04-12T07:25:21.750 回答
1

getchar() 读取输入的单个字符。

但是,您的终端可能会对输入进行行缓冲,在您按 Enter 之前不会将任何输入发送到您的程序。

于 2012-04-12T07:23:20.233 回答
0

因为enter输入 a\n将被解释为EOF命令行会认为这是用户输入的结尾,并getChar()试图从该流中读取单个字符缓冲区,因此如果您enter在其前不输入字符而直接按下,则不会返回任何内容,请参阅 msdn:http://msdn.microsoft.com/en-us/library/5231d02a%28v=vs.71%29.aspx

于 2012-04-12T07:25:36.567 回答