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)
有人可以指导我。
答案 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);