C 左键用“-”代替空格和0填充数字

C 左键用“-”代替空格和0填充数字,c,printf,C,Printf,当我们使用printf时,我们可以这样写: int i = 1; printf("%06d" i); 然后我得到了000001,0填满了空间 那么,有没有一种方法可以使用其他字符,如-来填充空格,而不是0?看起来这不是一个带有printf系列函数的选项:您可以选择零'0'或空格'。如果必须使用其他字符填充,则需要自己执行转换 一种方法是使用sprintf打印到带有空格填充的6字符缓冲区中,然后用破折号替换空格'-',如下所示: char buf[12]; // 11 for the numbe

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

int i = 1;
printf("%06d" i);
然后我得到了
000001
0
填满了空间


那么,有没有一种方法可以使用其他字符,如
-
来填充空格,而不是
0

看起来这不是一个带有
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);

看答案。谢谢,我只是想知道有没有捷径。:)<代码> BUF〔7〕< /代码>应大于<代码> %6D 不限制打印的字符数,只指定最小值。我正处于处理最佳大小的问题的中间。