是否有“分支”字符串格式描述符?

时间:2019-02-07 16:15:38

标签: c string-formatting

我刚刚做到了

printf( (n==0) ? " %d" : " %3d", n );

但是有条件格式描述符吗?

因此,它的含义类似于“如果这种短时使用这样的填充,但是如果更长时使用这样的填充。”

可以吗?

3 个答案:

答案 0 :(得分:7)

没有条件,但是您可以使用*在参数中指定宽度。例如:

printf(" %*d", (n==0)?1:3, n);

答案 1 :(得分:2)

您可以使用*将字段宽度作为参数传递:

printf("%*d", length, n);

答案 2 :(得分:1)

其他答案指出了字段宽度修饰符*

由于您要比较零/非零以确定长度,因此甚至可以将n的值砍成布尔值(10),然后将其相乘根据您想要的长度:

printf("%*d", !!n*3, n);