微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使terminalinput发送一定数量的字符后

我正在用C创build一个Linuxterminal程序。

我试图做一个两位数的代码地址数组的位置。 我不想在每两位input一次后进入回车,我希望在input字符后直接通过scanf将input发送到我的缓冲区variables。

我没有代码示例,因为我不知道如何处理这个问题。

谢谢你的帮助!

如何在Linux上加载共享库延迟

用编程的方式阻止alt + shift事件或禁止改变语言

我怎样才能从一个网页启动一个Windows应用程序?

Windows C / C ++驱动器初始化/分区/格式

隐藏由system()调用的命令提示符;

如何使用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] 举报,一经查实,本站将立刻删除。

相关推荐