2010-06-08 90 views
3

使用printf我想打印一個數字序列,所以我從for for循環中獲取;使用printf填充0來依次打印數字

1 
2 
... 
9 
10 
11 

我從這些數字創建文件。但是,當我使用「LS」一一列舉了,我得到

10 
11 
1 
2 
.. 

如此,而不是試圖使用bash來解決這個問題,我不知道如何可以打印;

0001 
0002 
... 
0009 
0010 
0011 

感謝

回答

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

=>

0045 

基本上,0表明printf的填充「0 ',4是數字計數和'i'是整數的佔位符(您也可以使用'd')。

請參閱Wikipedia關於格式佔位符。

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

+1具有相同的靈活性+1,因爲唯一的解決方案是使用精確標誌 – 2010-06-08 18:23:51

4
printf("%04d", n); 
0

您使用%04d作爲整數的格式字符串。

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++來救援!

+0

+1作爲使用慣用C++的唯一答案。 – Johnsyweb 2010-06-09 09:52:32

0

簡單的情形:

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

爲什麼 「%* d」?因爲您不想硬編碼前導數字的數量;它取決於列表中最大的數字。使用IOStreams,您可以與setw(int)