我想从控制台的左上角开始打印一些动态状态文本消息,在Linux上将左侧区域留空(类似于watch -n 1 pwd
).我如何使用C或C++来完成这项工作?
我想从控制台的左上角开始打印一些动态状态文本消息,在Linux上将左侧区域留空(类似于watch -n 1 pwd
).我如何使用C或C++来完成这项工作?
您的终端很有可能支持ANSI escape codes.它们提供了一种改变终端输出属性、控制游标等的方法.
在该程序中,ESC
被定义为转义代码前缀,CLS
被定义为清除屏幕的控制序列,HOME
被定义为将光标移动到其在控制台窗口左上角的起始位置的控制序列.在支持ANSI转义代码的终端仿真器中,将这些代码打印到终端窗口应该具有所需的效果.
请注意,C语言不支持这一点,但终端仿真器广泛支持.
#include <stdio.h>
/* ANSI Escape Sequences */
#define ESC "\x1B"
#define CLS ESC"[2J"
#define HOME ESC"[H"
void clear_to_top(void) {
printf(CLS);
printf(HOME);
fflush(stdout);
}
int main(void) {
clear_to_top();
puts("Starting from the top....");
}