我正在尝试制作一个更类似的应用程序,用户的输入是记录的,而不是打印的所以我关闭了回声,并关闭了规范模式以立即处理输入。
这是代码:
struct termios oflags, nflags;
tcgetattr(fileno(stdin), &oflags);
nflags = oflags;
nflags.c_lflag &= ~ECHO;
nflags.c_lflag |= ECHONL;
nflags.c_lflag &= ~(ICANON);
nflags.c_cc[VKILL] = 0; /* <Nada> */
if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) {
exit(0);
}
然后阅读输入并执行以下操作:
while(1){
c = getchar();
然后我把C作为基本的控制。
所以这在很大程度上是可行的除了每次按enter时,当处理按预期工作时,输入仍会被提交/刷新最后一行有个小方括号。
任何帮助都将不胜感激谢谢!
解决方案:删除“nflags.c|lflag |=ECHONL;”可以修复它,我添加它是因为另一个原因。
最佳答案
删除'nflags.c|lflag |=ECHONL;'修复了它,我添加了这个功能是出于另一个原因,但我也可以使用它。