c - 这个字符序列 "\033[H\033[J"在 C 中做了什么?

标签 c ansi-escape

这个问题在这里已经有了答案:





What does printf("\033c" ) mean?

(3 个回答)


2年前关闭。




我在一些随机网站中浏览了以下奇怪的字符序列。当编译和执行时,这个 Sequence 清除了终端中所有以前的内容。它是清除输出流中的缓冲区还是只清除 tty 缓冲区?

int main()
{
   printf("\033[H\033[J");
   return 0;
}

最佳答案

这些是 ANSI escape codes .
\033代表 ESC (ANSI 值 27)。

ESC [ 是一种 escape sequenceControl Sequence Introducer (CSI) .

CSI 命令以 ESC[ 开头后跟零个或多个参数。
\033[H (即, ESC[H )和 \033[J是 CSI 代码。
\033[H将光标移动到屏幕的左上角(即屏幕第一行的第一列)。


\033[J清除从光标到屏幕末尾的屏幕部分。

当组合使用时,它会导致屏幕被清除,光标位于屏幕的开头。

这是使用 Ctrl+L 或 clear 时获得的功能bash 命令。

这些 CSI 也可以有参数。如果没有提供,它将使用默认值。

关于c - 这个字符序列 "\033[H\033[J"在 C 中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672661/

相关文章:

c - 设置一个指针,保留NULL

c++ - 跨不同功能使用 Goto 功能

c - Linux native 支持 ansicon 导入的转义序列吗?

macos - 在 mac osx 终端应用程序中扩展 ascii 字符和 ansi

java - 忽略所有转义字符和JAVA代码

shell - 编译模式下的 ANSI 着色

c - 交错开关上的模糊 C 构造

c - 如何使新结构与旧结构兼容?

c - GPS NMEA 字符串的解析代码

javascript - 如何在终端中显示和刷新数据而不持续追加数据?