【问题标题】:printf data type specifier complex questionprintf 数据类型说明符复杂问题
【发布时间】:2020-08-27 06:38:32
【问题描述】:
printf("\e[2J\e[0;0H");

这条线是什么意思?

我能知道要学习什么以及从哪里理解这个陈述吗?

【问题讨论】:

标签: c++ c printf


【解决方案1】:

他们是ANSI escape sequences

这些序列定义了更改显示图形、控制光标移动和重新分配键的功能。

它以\e[ 开头,后面的字符定义了应该发生的事情。

2J:清除终端

Esc[2J 擦除显示: 清除屏幕并将光标移动到起始位置(第 0 行,第 0 列)。

0;0H 将光标移动到位置 (0, 0)

Esc[Line;ColumnH 光标位置: 将光标移动到指定位置(坐标)。

另见:

【讨论】:

    【解决方案2】:

    "\e" 作为转义序列不是 C 标准的一部分。

    许多编译器将否则未定义的行为视为值为 27 的字符 - ASCII 转义 字符。

    替代的定义良好的代码:

    //printf("\e[2J\e[0;0H");
    printf("\x1B[2J\x1b[0;0H");
    printf("\033[2J\033[0;0H");
    #define ESC "\033"
    printf(ESC "[2J" ESC "[0;0H");
    

    转义字符引入了 ANSI 转义序列,并在 @Mickael B. 中得到了回答。选择终端实现其中一些序列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 2020-05-23
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多