我先在Windows上用Ansi C编写了一个小程序,现在我在Ubuntu上用内置的GCC编译了它.
程序很简单:
- 用
scanf()
从控制台读这句话. - 分析字符串并计算.
但是奇怪的事情发生了.当我try 移动光标时,它会打印四个字符:
- 按向上打印"
^[[A
" - 按Dn打印"
^[[B
" - 按Rt打印"
^[[C
" - 按Lt打印"
^[[D
"
如何避免这种情况?
为什么打印这4个字符而不是移动光标?
我先在Windows上用Ansi C编写了一个小程序,现在我在Ubuntu上用内置的GCC编译了它.
程序很简单:
scanf()
从控制台读这句话.但是奇怪的事情发生了.当我try 移动光标时,它会打印四个字符:
^[[A
"^[[B
"^[[C
"^[[D
"如何避免这种情况?
为什么打印这4个字符而不是移动光标?
因为这就是键盘实际发送到PC的内容(更准确地说,终端打印的内容是它实际从键盘接收到的内容).例如,bash
获取这些值,对其进行解密,并理解您想要四处移动,因此它要么移动光标(在左/右的情况下),要么使用其历史记录获取以前的命令(向上/向下).所以你不能指望你的程序神奇地支持箭头键.
However,从终端的标准输入读取已经支持左/右箭头键(我相信,但我现在不在Linux中进行测试和确认).所以我猜还有另一个问题在干扰.一个可能的原因可能是你的某个修改键卡住了?也许是ALT、CTRL或SUPER?