printf语句的颜色

时间:2014-02-14 08:31:20

标签: c gcc printf

CODE

char *pcs = "\e[1;34m%d\e[0m";
int main()
{
    printf(pcs,12313213);
    return 0;
}

输出

12313213蓝色

我希望printf 2号为蓝色。像--->

之类的东西
printf(pcs+pcs,12313213,999); //(does not work)

有人可以指导我。

4 个答案:

答案 0 :(得分:2)

pcs是指针... pcs+pcs您将地址加倍...您可以拨打两次printf

printf(pcs,12313213);
printf(pcs,999);

您还可以在遮罩中拆分换色模式:

char *COLOR = "\e[1;34m";
char *ENDN = "\e[0m";
int main()
{
   printf("%s%d%s %s%d%s", COLOR, 12313213, ENDN, COLOR, 999, ENDN);
   return 0;
}

答案 1 :(得分:1)

声明 pcs + pcs增加了两个指针。结果是一个指针指向完全​​不相关的地方,这几乎肯定会使你的程序崩溃。 做你想做的事的正确方法是改变格式字符串以接受两个数字:

char *pcs = "\e[1;34m%d%d\e[0m";

或将格式字符串设为宏并使用它两次:

#define pcs "\e[1;34m%d\e[0m"
printf(pcs pcs,12313213,999); 

请注意,两个宏实例之间没有逗号。

答案 2 :(得分:0)

尝试在%d的值中添加一个pcs,即char *pcs = "\e[1;34m%d %d\e[0m";

答案 3 :(得分:0)

只需使用

printf("\e[1;34m%d\e[0m \e[1;34m%d\e[0m",12313213,999);