为什么终端在Ubuntu中按下箭头键时显示"^ [[A""^ [[B""^ [[C""^ [[D"]?

 跑车世界Y 发布于 2023-01-31 10:05

我首先在Windows上用Ansi C编写了一个小程序,然后我在Ubuntu上用内置的GCC编译它.

该计划很简单:

从控制台读取行scanf().

分析字符串并计算.

但奇怪的事情发生了.当我尝试移动光标时,它会打印四个字符:

按下Up打印"^ [[A"

按下Dn打印"^ [[B"

按下Rt打印"^ [[C"

按下Lt打印"^ [[D"

如何避免这种情况?

为什么打印这4个字符而不是移动光标?

Shahbaz.. 22

因为这就是键盘实际发送到PC的内容(更准确地说,终端打印的是它实际从键盘接收的内容).bash例如获取这些值,解密他们明白,要走动,所以它会将光标移动(在的情况下,左/右),或使用其历史来获取先前的命令(上行/下行).所以你不能指望你的程序神奇地支持箭头键.

但是,从终端的标准输入读取已经支持左/右箭头键(我相信,但我现在不在Linux中测试并确保).所以我猜测还有另一个问题在干扰.一个可能的原因可能是你的一个修饰键被卡住了?也许ALT,CTRL或SUPER?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有