我试图使用getchar()从键盘一次检索一个击键。尽管它这样做了,但我遇到的问题是没有立即发送它,它等待按下enter键,然后从缓冲区一次读取1个字符。

int main(){
    char c = getchar();
    putchar(c);

return 0;
}

如何在每次按下键盘时立即读取它?
谢谢

最佳答案

你必须在原始模式下通过。
我把代码粘贴到:
http://c.developpez.com/faq/?page=clavier_ecran

#include <termios.h>
#include <unistd.h>

void mode_raw(int activer)
{
static struct termios cooked;
static int raw_actif = 0;

if (raw_actif == activer)
    return;

if (activer)
{
    struct termios raw;

    tcgetattr(STDIN_FILENO, &cooked);

    raw = cooked;
    cfmakeraw(&raw);
    tcsetattr(STDIN_FILENO, TCSANOW, &raw);
}
else
    tcsetattr(STDIN_FILENO, TCSANOW, &cooked);

raw_actif = activer;

}
之后,您不需要点击回车键。
编辑:
正如埃米特所说,这是Unix版本,取决于环境。

10-07 20:20