在 C 中打印缩进

Printing with indentation in C

哪种方式最适合将所有输出排列在右边?

示例:对于 2 的幂:

        2
        4
        8
       16
       32
       64
      128
      256
      512
     1024
     2048

     ...

134217728

如果我的最后一个数字有 N 个数字,如何打印第一个数字(在本例中只有一个数字),左边有 (N - 1) 个空格?

您可以使用 printf 的宽度技巧,如下所述:Printf reference

printf ("Width trick: %*d \n", 5, 10);

会产生

Width trick: 10

您可以使用 *printf() 提供计算字段宽度。所以你计算出最大位数后,你可以这样做:

printf("%*d\n", max_digits, value);

示例

int main(int argc, char *argv[]) {
    for (int i=2; i<134217729;i=i*2)
        printf("%*d\n",20, i);
    return 0;
}

输出

           2
           4
           8
          16
          32
          64
         128
         256
         512
        1024
        2048
        4096
        8192
       16384
       32768
       65536
      131072
      262144
      524288
     1048576
     2097152
     4194304
     8388608
    16777216
    33554432
    67108864
   134217728