是否有推荐的方法将标题与C中的数据输出对齐?

时间:2017-05-30 02:57:44

标签: c clion

C中是否有推荐的方式来标记我的输出,以便它实际上与数据对齐?我目前正在使用转义序列\ t,可以在下面查看。

#include <stdio.h>

int main()
{

    int i;
    int meatBalls[5] = {1, 2, 3, 4, 5};

    printf("\tElement \t Address \t Value \n");

    for(i=0; i < 5; i++) {
        printf("meatBalls[%d] \t %p \t %d \n", i, &meatBalls[i], meatBalls[i]);
    }


    return 0;
}

这是我当前的输出,你可以看到标题没有对齐

    Element      Address     Value   
meatBalls[0]     0x7fff547d0640      1 
meatBalls[1]     0x7fff547d0644      2 
meatBalls[2]     0x7fff547d0648      3 
meatBalls[3]     0x7fff547d064c      4 
meatBalls[4]     0x7fff547d0650      5 

2 个答案:

答案 0 :(得分:3)

走向正确的方向:

#include <stdio.h>

int main(void)
{
    int i;
    int meatBalls[5] = {1, 2, 3, 4, 5};

    printf("%12s %18s %6s\n", "Element", "Address", "Value");

    for(i=0; i < 5; i++) {
        printf("meatBalls[%d] \t %p \t %d \n", i, &meatBalls[i], meatBalls[i]);
    }

    return 0;
}

<强>输出

     Element            Address  Value
meatBalls[0]     0x7fff60a1f700      1 
meatBalls[1]     0x7fff60a1f704      2 
meatBalls[2]     0x7fff60a1f708      3 
meatBalls[3]     0x7fff60a1f70c      4 
meatBalls[4]     0x7fff60a1f710      5 

答案 1 :(得分:1)

最简单的方法可能就是更好地利用&#34; printf&#34;设置字段宽度......可能是这样的:

#include <stdio.h>

int main() {
    int i;
    int meatBalls[] = {1, 2, 3, 4, 5};

               /-- 12 characters in "Element": 9 in "meatBalls", plus 3 in the subscript ("[#]")
               |      /-- 14 characters in an address
               |      |    /-- unimportant, since @ end of line
    printf("%-12s  %-14s  %s\n", "Element", "Address", "Value");
    for(i=0; i < 5; i++) {
        printf("meatBalls[%1d]  %14p  %d\n", i, &meatBalls[i], meatBalls[i]);
    }
    return 0;
}

请注意,您可能必须使用指针格式,因为指针是与平台相关的