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

前端 未结 4 1600
天涯浪人
天涯浪人 2021-01-17 15:29

We all know in C-based languages, printf(\"%11d\", some_int); means right align within an 11 character field, but what if I want to replace this constant 1

相关标签:
4条回答
  • 2021-01-17 16:03

    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.

    0 讨论(0)
  • 2021-01-17 16:04

    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 讨论(0)
  • 2021-01-17 16:16

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

    printf("%*d", some_width, some_int);
    
    0 讨论(0)
  • 2021-01-17 16:18

    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.

    0 讨论(0)
提交回复
热议问题