【发布时间】:2014-02-14 08:31:19
【问题描述】:
代码
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)
有人可以指导我吗?
【问题讨论】:
代码
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)
有人可以指导我吗?
【问题讨论】:
声明 pcs+pcs 增加了两个指针。结果是一个指向完全不相关的地方的指针,这几乎肯定会使你的程序崩溃。 做你想做的事情的正确方法是更改格式字符串以接受两个数字:
char *pcs = "\e[1;34m%d%d\e[0m";
或将格式字符串设为宏并使用两次:
#define pcs "\e[1;34m%d\e[0m"
printf(pcs pcs,12313213,999);
请注意,两个宏实例之间没有逗号。
【讨论】:
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;
}
【讨论】:
printf 语句中做。有可能吗??
尝试在pcs 的值中再添加一个%d,即char *pcs = "\e[1;34m%d %d\e[0m";
【讨论】:
随便用
printf("\e[1;34m%d\e[0m \e[1;34m%d\e[0m",12313213,999);
【讨论】: