我试图使用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版本,取决于环境。