c - printf() - 如何添加前导零 + 填充

标签 c printf

我想填充一列,使其宽度为 8 个字符,并使整数左对齐,最多有一个前导零,如下所示:

[00      ]
[01      ]
[07      ]
[11      ]
[14      ]

我知道如何添加前导零 (printf("%02d\n", integer)) 或填充 (printf("%-8d\n", integer) ),但我不知道如何将两者结合起来。有没有一种简单的方法可以实现这一目标?

最佳答案

指定最小字段宽度 (8) 和精度 (.2) 和左对齐 (-) — 参见 fprintf() —像这样:

#include <stdio.h>

int main(void)
{
    int array[] = { 0, 1, 7, 11, 14, 314159 };
    enum { NUM_ARRAY = sizeof(array) / sizeof(array[0]) };

    for (int i = 0; i < NUM_ARRAY; i++)
        printf("[%-8.2d]\n", array[i]);
    return 0;
}

输出(在 macOS 12.3 上):

[00      ]
[01      ]
[07      ]
[11      ]
[14      ]
[314159  ]

这似乎是你想要的。

关于c - printf() - 如何添加前导零 + 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71546836/

相关文章:

linux - 将制表符打印为十六进制

perl - %s 是唯一允许 printf 正确显示大整数的格式吗?

c - C中数组中的行替换

c - 帮助 C 中的头文件

c - 通过 sscanf 解析 syslog 消息

c - 使用宏会产生意外的输出吗?

interface - 忽略 "String() string"方法打印 Go 类型

C: 数组初始化需要一个大括号括起来的初始化列表——简单代码

c - 如何引用在静态库中声明的变量?

java - 如何在 Java 中使用 printf() 格式化数组?