我正在用C创build一个Linuxterminal程序。
我试图做一个两位数的代码地址数组的位置。 我不想在每两位input一次后进入回车,我希望在input字符后直接通过scanf将input发送到我的缓冲区variables。
我没有代码示例,因为我不知道如何处理这个问题。
谢谢你的帮助!
如何在Linux上加载共享库延迟
用编程的方式阻止alt + shift事件或禁止改变语言
Windows C / C ++驱动器初始化/分区/格式
如何使用mplayer播放到内存
解码Opusaudio数据
Windows服务与Windows应用程序 – 最佳实践
在Windows Compact 2013中标记存储卷
Windows服务与GUI监视器?
你有两个选择,几乎以同样的方式解决同样的问题。 首先是在运行程序时使用stdbuf ; 调用是:
stdbuf -i0 ./a.out
使用它可以防止stdin被行缓冲,并且可以让你使用fread()或类似的命令来检索输入。
另一种是将终端置于原始模式。 这里有很好的描述。 但缺点是控制字符不再被处理。 在你的程序中,你
#include <termios.h> main(){ struct termios trm; tcgetattr(STDIN_FILENO,&trm); /* get the current settings */ trm.c_cc[VMIN] = 1; /* return after 1 byte read; you might make this a 2*/ trm.c_cc[VTIME] = 0; /* block forever until 1 byte is read */ tcsetattr(STDIN_FILENO,TCSANow,&trm); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。