在 Unix 上,当我按向上箭头键时,它会显示此字符串,但是在 scanf 时,它不会将其作为输入。请解释如何将其作为输入。我们可以像第一个 ^[ 是 Esc 键等那样按字符比较字符吗?
最佳答案
那是该键生成的转义序列。 '^['
是 CTRL-[
(ESC
字符),另外两个字符是 '['
和 'A'
.
如果您想处理它们,您需要阅读所有三个字符并确定它们表示用户按下了向上箭头键。
您是否可以使用您的 scanf
执行此操作取决于格式字符串。为此,我将使用较低级别的字符输入。
我从不使用 [f]scanf
在实际代码中,因为失败会导致您不知道输入指针的位置。对于基于行的输入,我发现使用 fgets
总是更好然后 sscanf
检索到的字符串。
但是,正如我所说,您应该使用 getc
及其低级字符 I/O 的兄弟。或者找一个更高级的函数比如readline
在 Linux 下,或其他知道将其转换为特殊键码的库,例如 VK_KEY_UP
你可以处理。
关于unix - ^[[一个字符组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1502332/