在 c 中使用带格式说明符的星号

Use of asterisk with format specifier in c


printf("%*d",variable);


我想知道printf函数中的(*)有什么用

星号用于指定值的宽度,然后 printf 接受 3 个参数:

printf("%*d", width, value);

示例:

printf("%*d", 3, 16);

// 输出:“16”(printf 添加了一个 space 以遵守指定的宽度)

Reference

. followed by integer number or *, or neither that specifies precision of the conversion. In the case when * is used, the precision is specified by an additional argument of type int. If the value of this argument is negative, it is ignored. If neither a number nor * is used, the precision is taken as zero. See the table below for exact effects of precision.

对于整数说明符 (d、i、o、u、x、X):精度指定要写入的最小位数。如果要写入的值小于此数字,则用前导零填充结果。即使结果更长,该值也不会被截断。精度为 0 表示不为值 0 写入任何字符。 对于 a、A、e、E、f 和 F 说明符:这是要在小数点后打印的位数(默认情况下,这是 6)。 对于 g 和 G 说明符:这是要打印的最大有效数字位数。 对于 s:这是要打印的最大字符数。默认情况下,打印所有字符,直到遇到结束空字符。 如果指定的周期没有明确的精度值,则假定为 0。

 printf ("Width trick: %*d \n", 5, 10)

输出

Width trick:    10