仅用标准C库函数的是不支持的,因为标准库函数没有提供一套“通用”的方法。
用e或者 33或者ASCII码27都是用的ANSI escape sequence来实现的(有些地方叫ANSI Color),前提是控制台支持这种语法,Windows的默认的命令行窗口就不支持,有些TTY工具还要额外设置才能支持(比如secureCRT)。
百度ANSI Color就能搜出来相关的用法,比如:
控制台ANSI Color的表示和用法-zhangsanji-ChinaUnix博客
或者
对应的技术标准是ISO/IEC 6429。
有人可能会说Telnet能支持这种控制符号,但这种支持是telnet实现的,Windows自己的CMD.EXE并不支持。
VS环境下,Windows控制台只能使用SetConsoleCursorPosition来设置光标:
Turbo C是gotoxy函数。
总之,没有通用的办法,根据自己代码的运行平台使用对应的API来实现。
可以的,有一个特殊的转义字符 e
(ASCII-27)可以做到任意行列的写,前提是你运行程序的terminal要支持,不过目前来看常见的terminal貌似都支持(cmd和powershell抽风不显示的时候请在程序里面写上system("chcp 65001")
)。
更正:
2. VS里面不支持e
的话请使用