我正在尝试制作一个更类似的应用程序,用户的输入是记录的,而不是打印的所以我关闭了回声,并关闭了规范模式以立即处理输入。
这是代码:

        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;'修复了它,我添加了这个功能是出于另一个原因,但我也可以使用它。

10-04 16:24