zoukankan      html  css  js  c++  java
  • [转]printf输出字体颜色

    有时候为了实现在终端输出的时候字体能够带颜色,并且可以产生简单的闪烁的功能,特写了下列的代码
    实现hello world的带颜色的输出,并且每过一秒产生一个闪烁的功能.
    (注:具体还得判断终端类型)

    CODE:
    #include<stdio.h>
    #include<unistd.h>
    #include<signal.h>
    #include<stdlib.h>

    int flag = 0;

    void sig_int(int signum)
    {
            if (flag == 1)
                    fprintf(stderr, "\033[47;31mhello world\033[5m");
            fprintf(stderr,"\033[;\033[0m");
            fprintf(stderr,"\033[;\033[0m");
            printf("\n");
            exit(0);
    }

    int main()
    {
            int i = 0;
            struct sigaction sig_act;
            sig_act.sa_handler = sig_int;
            sigemptyset(&sig_act.sa_mask);
            sig_act.sa_flags = 0;
            if (sigaction(SIGINT, &sig_act, NULL) < 0)
            {
                    fprintf(stderr, "signal error\n");
                    exit(1);
            }
            while (i++ < 10)
            {
                    fprintf(stderr, "\033[;\033[s");
                    fprintf(stderr, "\033[47;31mhello world\033[5m");
                    flag = 0;
                    sleep(1);
                    fprintf(stderr, "\033[;\033[u");
                    fprintf(stderr, "\033[;\033[K");
                    flag = 1;
                    sleep(1);
            }

            fprintf(stderr, "\033[47;31mhello world\033[5m");
            fprintf(stderr,"\033[;\033[0m");
            printf("\n");
            return 0;
    }


    该程序实现输出十次hello world然后退出. 使用一个信号是为了还原默认的终端输出的颜色.
    另外再讲讲如何输出颜色以及颜色的代码.

    格式:

    CODE:
    printf("\033[字背景颜色;字体颜色m字符串\033[0m" );  

    printf("\033[47;31mhello world\033[5m");
    47是字背景颜色, 31是字体的颜色, hello world是字符串.  后面的\033[5m是控制码.


    颜色代码:

    QUOTE:
    字背景颜色范围: 40--49                   字颜色: 30--39
                    40: 黑                           30: 黑
                    41: 红                           31: 红
                    42: 绿                           32: 绿
                    43: 黄                           33: 黄
                    44: 蓝                           34: 蓝
                    45: 紫                           35: 紫
                    46: 深绿                         36: 深绿
                    47: 白色                         37: 白色


    ANSI控制码:

    QUOTE:
      \033[0m   关闭所有属性   
      \033[1m   设置高亮度   
      \03[4m   下划线   
      \033[5m   闪烁   
      \033[7m   反显   
      \033[8m   消隐   
      \033[30m   --   \033[37m   设置前景色   
      \033[40m   --   \033[47m   设置背景色   
      \033[nA   光标上移n行   
      \03[nB   光标下移n行   
      \033[nC   光标右移n行   
      \033[nD   光标左移n行   
      \033[y;xH设置光标位置   
      \033[2J   清屏   
      \033[K   清除从光标到行尾的内容   
      \033[s   保存光标位置   
      \033[u   恢复光标位置   
      \033[?25l   隐藏光标   
      \33[?25h   显示光标


    这样, 在某些时候就可以实现动态的输出.

  • 相关阅读:
    Java实现 LeetCode 833 字符串中的查找与替换(暴力模拟)
    Java实现 LeetCode 833 字符串中的查找与替换(暴力模拟)
    Java实现 LeetCode 833 字符串中的查找与替换(暴力模拟)
    Java实现 LeetCode 832 翻转图像(位运算)
    Java实现 LeetCode 832 翻转图像(位运算)
    Java实现 LeetCode 832 翻转图像(位运算)
    Java实现 LeetCode 831 隐藏个人信息(暴力)
    Java实现 LeetCode 831 隐藏个人信息(暴力)
    Java实现 LeetCode 831 隐藏个人信息(暴力)
    how to use automapper in c#, from cf~
  • 原文地址:https://www.cnblogs.com/shadow21/p/2388159.html
Copyright © 2011-2022 走看看