使用带有填充零的printf按顺序打印数字

时间:2010-06-08 15:56:45

标签: c++ c

在C ++中,使用printf我想打印一个数字序列,所以我得到了一个“for”循环;

1
2
...
9
10
11

我从这些数字创建文件。但是当我用“ls”列出它们时,我得到了

10
11
1
2
..

因此,我不想尝试使用bash解决问题,我想知道如何打印;

0001
0002
...
0009
0010
0011

等等

由于

8 个答案:

答案 0 :(得分:10)

i = 45;
printf("%04i", i);

=>

0045

基本上,0告诉printf填充'0',4是数字计数,'i'是整数的占位符(你也可以使用'd')。

有关格式占位符的信息,请参阅Wikipedia

答案 1 :(得分:5)

printf("%04d\n", Num);应该有效。看看the printf man page

答案 2 :(得分:4)

printf("%04d", n);

答案 3 :(得分:3)

如果您使用的是C ++,那么为什么使用printf()

使用cout来完成工作。

 #include <iostream>
 #include <iomanip>

 using namespace std;

 int main(int argc, char *argv[])
 {

    for(int i=0; i < 15; i++)
    {
        cout << setfill('0') << setw(4) << i << endl;
    }
    return 0;
 }

这就是你的输出的样子:


0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014

C ++救援!

答案 4 :(得分:1)

printf("%4.4d\n", num);

答案 5 :(得分:0)

This article explain what you're trying to do

它被称为“带有前导零的填充”

答案 6 :(得分:0)

您使用%04d作为整数的格式字符串。

答案 7 :(得分:0)

简单案例:

for(int i = 0; i != 13; ++i)
  printf("%*d", 2, i)

为什么选择“%* d”?因为您不想硬编码前导数字的数量;它取决于列表中的最大数字。使用IOStreams,您在setw(int)

时具有相同的灵活性