我正在使用 C 创建一个 Linux 终端程序。
我正在尝试使一个两位数的代码地址成为一个数组位置。 我不想在每输入两个数字后就必须按回车键,我希望在输入 to 个字符后直接通过 scanf 将输入发送到我的缓冲区变量。
我没有代码示例,因为我不知道如何处理它。
感谢您的帮助!
最佳答案
您有两种选择,它们以几乎相同的方式解决了相同的问题。第一种是在运行程序时使用 stdbuf
;调用是:
stdbuf -i0 ./a.out
使用它可以防止 stdin
被行缓冲,并允许您使用 fread()
或类似的命令来检索输入。
另一种是将终端置于原始 模式。描述得很好here .但缺点是不再处理控制字符。在你的程序中,你
#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);
}
关于c - 使终端输入在一定数量的字符后发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186036/