是否有 "branching" 字符串格式描述符?
Is there a "branching" string format descriptor?
我刚刚做了这个
printf( (n==0) ? " %d" : " %3d", n );
但是有条件格式描述符吗?
所以,这意味着类似 "if this is very short use such and such padding, but, if this is longer use such and such padding."
可以吗?
没有条件,但您可以使用 * 指定参数中的宽度。例如:
printf(" %*d", (n==0)?1:3, n);
您可以使用 *
:
将字段宽度作为参数传递
printf("%*d", length, n);
其他答案已经指出字段宽度修饰符*
。
由于您要比较 zero/nonzero 以确定长度,您甚至可以将 n
的值破解为布尔值(1
或 0
),然后乘以你想要的长度:
printf("%*d", !!n*3, n);
我刚刚做了这个
printf( (n==0) ? " %d" : " %3d", n );
但是有条件格式描述符吗?
所以,这意味着类似 "if this is very short use such and such padding, but, if this is longer use such and such padding."
可以吗?
没有条件,但您可以使用 * 指定参数中的宽度。例如:
printf(" %*d", (n==0)?1:3, n);
您可以使用 *
:
printf("%*d", length, n);
其他答案已经指出字段宽度修饰符*
。
由于您要比较 zero/nonzero 以确定长度,您甚至可以将 n
的值破解为布尔值(1
或 0
),然后乘以你想要的长度:
printf("%*d", !!n*3, n);