左边用`-`填充数字而不是空格和0

时间:2013-09-10 15:46:31

标签: c printf

当我们使用printf时,我们可以写下:

int i = 1;
printf("%06d" i);

然后我得到了0000010填了空格

那么我可以使用-这样的其他字符填充空格而不是0吗?

1 个答案:

答案 0 :(得分:3)

看起来这不是printf系列功能的选项:您的选择有零'0'或空格' '。如果您必须使用其他角色填充,则需要自行执行转换。

这样做的一种方法是使用sprintf打印到带有空格填充的6字符缓冲区,然后用短划线'-'替换空格,如下所示:

char buf[12]; // 11 for the number plus one for the terminator
sprintf(buf, "%6d", i);
char *p = buf;
while (*p == ' ') {
    *p++ = '-';
}
printf("%s", buf);