【发布时间】:2017-12-13 04:38:17
【问题描述】:
我正在为 Dev C++ v5.11(gcc 编译器)寻找 gotoxy 的替代品,结果发现:
void gotoxy(int x,int y) {
printf("%c[%d;%df", 0x1b, y, x);
}
之后,当我尝试按如下方式调用此函数时:
int main() {
gotoxy(20, 10);
printf("Hello");
return 0;
}
输出不如预期:
<-[10;20fHello
这是打印在屏幕的最左上角(即 1,1) 而不是 (20,10)。
请给我一些建议,告诉我如何在我的代码中使用gotoxy。
【问题讨论】:
-
这看起来像一个 ANSI 转义序列。我认为 Windows 控制台不支持这些。
-
您可以使用this open-source CONIO implementation for MinGW/Dev-C++。安装 Devpak 后,您需要将编译器路径配置为指向 Dev-C++ 安装目录中的
include和lib目录(例如,C:\Program Files (x86)\Dev-C++ 5.11\include用于标头,C:\Program Files (x86)\Dev-C++ 5.11\lib用于库)。然后,您需要确保链接 lib。 64 位版本需要-lconio_64或-lconio_unicode_64,具体取决于您是否#define UNICODE。 32 位只删除了_64。然后根据需要只需#include <conio2.h>。 -
在使用 Wayback Machine 对the docs for SetConsoleMode 的更新进行了一些挖掘之后,Windows 10 周年更新添加了一些对控制台输出的 VT100 支持,似乎 2017 年春季的创意者更新增加了更多支持,包括输入。有关如何使用它们的更多信息以及如何启用这些功能的示例,请参阅Console Virtual Terminal Sequences。不确定它是否适用于 Win8.1 或更早版本:(
-
请注意,对于那些想知道的人来说,这些功能似乎不适用于
wineconsole。 -
per this 'en.wikipedia.org/wiki/ANSI_escape_code' windows 10 之前没有包含终端操作功能。但是,您可以使用诸如
ansi.com之类的驱动程序来启用 ansi 转义序列。