使用printf我想打印一個數字序列,所以我從for for循環中獲取;使用printf填充0來依次打印數字
1
2
...
9
10
11
我從這些數字創建文件。但是,當我使用「LS」一一列舉了,我得到
10
11
1
2
..
如此,而不是試圖使用bash來解決這個問題,我不知道如何可以打印;
0001
0002
...
0009
0010
0011
等
感謝
使用printf我想打印一個數字序列,所以我從for for循環中獲取;使用printf填充0來依次打印數字
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);
應該工作。看看the printf man page。
This article explain what you're trying to do
它被稱爲 「填充用前導零」
printf("%4.4d\n", num);
printf("%04d", n);
您使用%04d作爲整數的格式字符串。
如果您使用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++來救援!
+1作爲使用慣用C++的唯一答案。 – Johnsyweb 2010-06-09 09:52:32
簡單的情形:
for(int i = 0; i != 13; ++i)
printf("%*d", 2, i)
爲什麼 「%* d」?因爲您不想硬編碼前導數字的數量;它取決於列表中最大的數字。使用IOStreams,您可以與setw(int)
+1具有相同的靈活性+1,因爲唯一的解決方案是使用精確標誌 – 2010-06-08 18:23:51