linux c 控制台输出控制

控制台控制大多以ESC开头,即 ascii 的27,8进制为 \033,十六进制为 \x1b


光标控制

\033[2K     擦除当前光标所在的行

\033[A     移动光标到上一行,列不变

\r             移动光标到行头

下面是控制台同行覆盖刷新输出的例子

#include <stdio.h>

#include 

int main(){
    int i = 1;
    int n = 10;

    setvbuf(stdout, NULL, _IONBF, 0);
    printf("%d / %d", i++, n);
    for (;i <= n; i++) {
        sleep(1);
        printf("\033[2K\r");
        printf("%d / %d", i, n);

    }

    printf("\n");
    return 0;
}


颜色控制

格式:\x1b[显示方式;前景色;背景色m

说明:
前景色            背景色           颜色
---------------------------------------
30                40              黑色
31                 41              红色
32                42              绿色
33                43              黃色
34                44              蓝色
35                45              紫红色
36                46              青蓝色
37                47              白色

显示方式           意义
-------------------------
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见

例子:
\x1b[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\x1b[0m          <!--采用终端默认设置,即取消颜色设置-->
#include <stdio.h>

#define WHITE "\x1B[37m"
#define RED  "\x1B[31m"
#define GREEN  "\x1B[32m"
#define YELLOW  "\x1B[33m"
#define DEFAULT_COLOR  "\x1B[0m"

void color_reset() {
    printf(DEFAULT_COLOR);
}

int main() {
    printf("%si am red\n", RED);
    printf("%si am yellow\n", YELLOW);
    color_reset();

    return 0;
}


上一篇: 单播、多播(组播)、广播
下一篇: 无
作者邮箱: 203328517@qq.com