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

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

1 2 ... 9 10 11 

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

 10 11 1 2 .. 

所以我不想用bash来解决这个问题,我想知道怎么打印;

 0001 0002 ... 0009 0010 0011 

等等

谢谢

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

=>

 0045 

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

有关格式占位符,请参阅Wikipedia 。

printf("%04d\n", Num); 应该管用。 看一下printf手册页 。

 printf("%04d", n); 

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

使用cout来完成你的工作。

  #include  #include  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 ++来救援!

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

本文解释了您要做的事情

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

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

简单案例:

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

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