无需按下即可获得单个字符
我试图从用户那里获得单个字符输入而无需用户输入。 我试过这个:
#include int main() { int input; for (;;) { input = getchar(); printf("%d\n", input); } }
但是,用户不仅需要按Enter键,还会注册两个按键(输入字符和换行符),即:
$ ./tests a 97 10 c 99 10
由于我总是希望用户输入一个字符,并希望将此字符设置为char
或int
,如何在不等待\n
情况下获取字符。
我也试过使用fgets
,但因为我在循环中等待用户输入,所以只是连续执行printf
而不会阻塞直到输入。
我的预期输出是:
a97 b98 ...
注意:我目前正在使用OSX,但我很满意适用于OSX或Linux的解决方案。
我最近需要完全相同的function,我已通过以下方式实现它:
#include char c; system("/bin/stty raw"); c = tolower(getchar()); system("/bin/stty cooked");
看看man stty ,我认为它应该适用于Linux和Mac OS X.
编辑:所以你的程序看起来像(你需要添加一个信号处理程序):
#include #include int main() { int input; for (;;) { system("/bin/stty raw"); input = getchar() - '0'; printf("%d\n", input); system("/bin/stty cooked"); } return 0; }
如果只想在一个命令的末尾按Enter键,则可以使用文件描述符0中的read(2)。
char buff[1025]; int ret = read(0, buff, 1024); buff[ret] = '\0';