unix - ^[[一个字符组合

标签 unix ascii

在 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/

相关文章:

python - 如何循环遍历用户在 python 中输入的 IP 地址

unix - 在 Mac OS X 终端中通过别名进入目录

c++ - 将 ASCII 数字字符转换为实际字符

c - 在 C 代码中表示 EOF?

c - 从给定文本中删除字母重音

linux - 如何将多行输出连接到一行?

linux - 使用配置文件的 bash 命令的别名

linux - 在没有dos2unix的情况下递归地转换目录和子目录中所有文件的所有EOL(dos-> unix)

python - 无法发送包含西里尔字母的电子邮件

Javascript 事件按键检查字符代码