开发者

How to pass parameter n to printf("%nd", some_int);

We all know in C-based languages, printf("%11d", some_int); means right align within an 11 character field, but 开发者_如何学JAVAwhat if I want to replace this constant 11 here with a dynamic variable, what am I gonna do ?


You can use the * character to specify the field width in its own argument:

printf("%*d", some_width, some_int);


You are going to read the printf(3) man page and come across the following:

Instead of a decimal digit string one may write "*" or "*m$" (for some decimal integer m) to specify that the field width is given in the next argument, or in the m-th argument, respectively, which must be of type int.


use linux command: "man 3 printf" to get more information. One way to do this is

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

where width is precision and num is argument to print. Other way equivalent to above one is

 printf("%2$*1$d", width, num);

More generally this is written as "*m$d", where m is int and argument number.


One way of doing this is to use an snprintf-equivalent on a character array buffer, in order to create your printf format string. (Be sure to check for buffer overflows, of course.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜