http://blog.csdn.net/liumang_D/archive/2009/11/30/4907083.aspx
给printf的输出加上些特效比如颜色,可以让打印信息更鲜明,在debug的时候特别有用。
颜色:
#define NONE         "\033[m" 
#define RED          "\033[0;32;31m" 
#define LIGHT_RED    "\033[1;31m" 
#define GREEN        "\033[0;32;32m" 
#define LIGHT_GREEN  "\033[1;32m" 
#define BLUE         "\033[0;32;34m" 
#define LIGHT_BLUE   "\033[1;34m" 
#define DARY_GRAY    "\033[1;30m" 
#define CYAN         "\033[0;36m" 
#define LIGHT_CYAN   "\033[1;36m" 
#define PURPLE       "\033[0;35m" 
#define LIGHT_PURPLE "\033[1;35m" 
#define BROWN        "\033[0;33m" 
#define YELLOW       "\033[1;33m" 
#define LIGHT_GRAY   "\033[0;37m" 
#define WHITE        "\033[1;37m"
比如:
printf("\033[31m ####----->> \033[32m" "hello\n" "\033[m");
颜色分为背景色和字体色,30~39用来设置字体色,40~49设置背景:
        背景色                        字体色
        40: 黑                          30: 黑
        41: 红                          31: 红
        42: 绿                          32: 绿
        43: 黄                          33: 黄
        44: 蓝                          34: 蓝
        45: 紫                          35: 紫
        46: 深绿                      36: 深绿
        47: 白色                      37: 白色
记得在打印完之后,把颜色恢复成NONE,不然再后面的打印都会跟着变色。
另外,还可以加一些ANSI控制码。加颜色只是以下控制码中的一种:
\033[0m   关闭所有属性   
\033[1m   设置高亮度   
\033[4m   下划线   
\033[5m   闪烁   
\033[7m   反显   
\033[8m   消隐   
\033[30m   --   \033[37m   设置前景色   
\033[40m   --   \033[47m   设置背景色   
\033[nA   光标上移n行   
\033[nB   光标下移n行   
\033[nC   光标右移n行   
\033[nD   光标左移n行   
\033[y;xH设置光标位置   
\033[2J   清屏   
\033[K   清除从光标到行尾的内容   
\033[s   保存光标位置   
\033[u   恢复光标位置   
\033[?25l   隐藏光标   
\033[?25h   显示光标
一个比较实用的例子,可以延伸很多东西哦!
- //使用终端的控制码做的,在当前终端动态显示时间
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <assert.h>
- #include <signal.h>
- #include <time.h>
- void hangup(int sig)
- {
- exit(sig);
- }
- int main(int argc, char *argv[])
- {
- FILE *fp = NULL;
- char datestr[11] = {0};
- char timestr[10] = {0};
- char dkcmd[]="\033[2h";
- char ekcmd[]="\033[2l";
- char sccmd[]="\0337";
- char rccmd[]="\0338";
- char lc1cmd[]="\033[1;70f";
- char lc2cmd[]="\033[2;71f";
- time_t tm;
- fp=fopen(ttyname(STDERR_FILENO), "w"); //这里用的是标准错误输出 //可改为"/dev/tty0"就是lcd控制台
- assert(fp); //判定fp不为NULL,如果为NULL,运行时会反应出对应的错误并终止程序的运行
- signal(SIGHUP, hangup);
- while(1){
- time(&tm);
- strftime(datestr,sizeof(datestr),"%Y-%m-%d",localtime(&tm));
- strftime(timestr,sizeof(timestr),"%H:%M:%S",localtime(&tm));
- fprintf(fp,"%s",dkcmd);
- fprintf(fp,"%s",sccmd);
- fprintf(fp,"%s",lc1cmd);
- fprintf(fp,"%s",datestr);
- fprintf(fp,"%s",lc2cmd);
- fprintf(fp,"%s",timestr);
- fprintf(fp,"%s",rccmd);
- fprintf(fp,"%s",ekcmd);
- fflush(fp);
- sleep(1);
- }
- fclose(fp);
- return 0;
- }
 
                    
                     
                    
                 
                    
                
 
         
 
                
            
        
 浙公网安备 33010602011771号
浙公网安备 33010602011771号