我想填充一列,使其宽度为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++相关问答推荐

为什么海湾合作委员会在共享对象中的. init_data的虚拟内存地址之前留出一个空白

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

标准的C17标准是用括号将参数包装在函数声明中吗

我编译了一个新的c程序,并收到以下错误

堆栈在作用域阻塞后会被释放吗?

难以理解Makefile隐含规则

变量>;-1如何在C中准确求值?

如何使用低级C++写出数值

进程已完成,退出代码为138 Clion

如何在GDB中查看MUSL的源代码

S和查尔有什么不同[1]?

如何将C中的两个字符串与从文件接收的字符串中的字符数进行比较

理解bzip2的BZ2_解压缩函数中的状态重新分配

Fprintf正在写入多个 struct 成员,并且数据过剩

当我用scanf(&Q;%S%S%S&Q;,单词0,单词1,单词2)输入多个单词时,除了最后一个单词外,每个单词的第一个字符都丢失了

用C++高效解析HTTP请求的方法

C语言中的指针和多维数组

const struct 成员的 typedef 中的灵活数组大小

为什么INT_MIN是在c语言的头文件limits.h中定义的(-INT_MAX-1)而不是直接使用-2147483648

计算 e^x 很好.但不是 x 的罪