我试图从用户那里获得单个字符输入而无需用户输入。 我试过这个:
#include int main() { int input; for (;;) { input = getchar(); printf("%dn", 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("%dn", input); system("/bin/stty cooked"); } return 0; }
如果只想在一个命令的末尾按Enter键,则可以使用文件描述符0中的read(2)。
char buff[1025]; int ret = read(0, buff, 1024); buff[ret] = ' ';
以上就是c/c++开发分享无需按下即可获得单个字符相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/544720.html