[英]getchar() in a while loop immediately after scanf(“ %c”, …)
[英]Using getchar to immediately retrieve keystrokes
我正在尝试使用getchar()从键盘一次检索1次击键。 虽然它这样做,我遇到的问题是不立即发送它,它等待按下回车键然后它从缓冲区一次读取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;
}
之后,您无需点击Enter键。
编辑:像Emmet说的那样,它是Unix版本,它取决于环境。
您可以使用conio.h中定义的getch()函数
请注意,使用getch()不会显示控制台上的字符。 如果你想看到你的intput,你可以使用像putch(),putchar(),printf()等函数。
例如
#include <conio.h>
int main()
{
char c = getch();
putch(c); //isn't necessary for the input, Let's you see your input.
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.