There is no need to construct a special format string. printf
allows you to specify the precision using a parameter (that precedes the value) if you use a .*
as the precision in the format tag.
For example:
printf ("%d %.*s", number, SIZE, letters);
Note: there is a distinction between width (which is a minimum field width) and precision (which gives the maximum number of characters to be printed).
%*s
specifies the width, %.s
specifies the precision. (and you can also use %*.*
but then you need two parameters, one for the width one for the precision)
See also the printf man page (man 3 printf
under Linux) and especially the sections on field width and precision:
Instead of a decimal digit string one may write "*" or "*m$" (for some
decimal integer m) to specify that the precision is given in the next
argument, or in the m-th argument, respectively, which must be of type int.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…