我正在为我的系统类项目用 C 语言开发一个 CLI 程序,它需要在保持命令提示符的同时显示传入的文本。不理会,传入的文本将看穿任何尝试键入的内容。在其他应用程序中,我看到在提示本身上方(或下方)打印的传入文本。有没有办法在 ANSI 转义中实现这一点?ncurses 似乎有点矫枉过正。
问问题
231 次
2 回答
2
您可以打印\r
删除提示:它将光标返回到当前行的开头。然后,您可以打印输出,后跟一些空格以清除任何剩余的输入字符、换行符并重新打印提示。
使用 ANSI 序列或特定于终端的库,您可以做更多事情,但我认为这是您仅使用 ASCII 即可可靠地做的所有事情。当然,除了打印 242 个空白行来重绘整个屏幕。
编辑:对不起,我没有正确回答 ANSI 部分。使用光标移动控制代码和现有字符上的打印空间,您几乎可以做任何事情,并且有一些方便的操作可以帮助您,例如“删除行”。但请记住,Windows 在使用 ANSI post XP 时表现不佳,其他系统也不能保证。
于 2011-01-27T19:30:04.347 回答
0
一方面,如果要在打印时保持提示,则不能使用 scanf 之类的东西。您必须拦截键盘事件或使用非等待方法来获取输入。然后您可以获取终端行数 (n) 并打印输出的最后 n-1 行,然后出现提示。
my2c
于 2011-01-27T19:37:04.107 回答