请参考以下代码片段,我将参考上面的行号:
https://gist.github.com/wilbertcr/474c6a13e377dc8ce51a
正如你在第 172-200 行看到的,我创建了原始 back_over 函数的修改版本,它只是移动指针而不擦除正在移动的字符。
在函数 in_process 之外,作为一个全局变量,我创建了 int verase,见第 1 行,我在第 82 行使用它来指示 CTRL+H 已被按下(ch == tp->tty_termios.c_cc[VERASED])。
我的想法是将其用作标志,以便我可以捕获下一个字符,这应该是我需要 back_over 的空格数,并通过调用 back_over 下一个字符指示的次数来做到这一点。
我遇到的问题是我不知道如何将下一个字符转换为相应的 int 以便我可以在 for 循环中使用它。第 27-38 行显示了失败的尝试,但是,无论我按下的键有多小(我尝试过 1、2 和 3),它总是将我带到行的开头(幸运的是 back_over 没有超出换行符——见第 185 行)。
似乎 for 循环执行得比它应该执行的要多,我怀疑这是因为“数字”不是真正的 1 或 2 或 3,而是其他东西,for 循环解释的东西比我的数字大得多按下键盘。我将不胜感激有关如何将其转换为 int 的帮助。