How to format printf statement better so things always line up

前端 未结 3 639
一生所求
一生所求 2021-01-22 05:53

I have this printf statement:

 printf(\"name: %s\\t\"
        \"args: %s\\t\"
        \"value %d\\t\"
        \"arraysize %d\\t\"
        \"scope %d\\n\",
               


        
相关标签:
3条回答
  • 2021-01-22 06:20

    Each conversion specifier can be given a field width which give the minimum number of characters that conversion will use. There are other flags and precision that can be used to control the output (for example with the %s conversion the precision item says how many characters maximum will be used).

    printf("name: %20.20s\t"
            "args: %10.10s\t"
            "value %6d\t"
            "arraysize %6d\t"
            "scope %6d\n",
             sp->name,
             sp->args,
             sp->value,
             sp->arraysize,
             sp->scope);
    
    0 讨论(0)
  • 2021-01-22 06:26

    Like dtrosset said:

    printf("name: %12s\t"
           // etc...
    

    Here is some documentation on printf format strings:

    http://www.cplusplus.com/reference/clibrary/cstdio/printf/

    Just make sure that the field width you specify is larger than whatever you expect to be printing. If you specify %2d, for instance, and then print 555, it will still print with 3 characters even though the rest of your fields are 2 characters, and it won't line up the way you want it to.

    0 讨论(0)
  • 2021-01-22 06:38

    Use a specific number for the maximum length of the string, in this case, 12:

    printf("name: %12s", sp->name);
    
    0 讨论(0)
提交回复
热议问题