2013-01-21 80 views
3

可能重複:
Extra leading zeros when printing float using printf?C格式化的字符串 - 如何將前導零添加到float和int值?

我試圖讓這個C程序的輸出有佔位零,作爲該計劃的輸出將被用作輸入另一程序。現在,我正在使用以下打印行。

fprintf(fp1, "06 BR%d%d %3.4f%3.4f%3.4f\n",i,d,X,Y,Z); 

i = index for the loop 
d = index for a second loop 
X = double for a Cartesian system 
Y = double for a Cartesian system 
Z = double for a Cartesian system 

現在輸出看起來是這樣的:

06 BR12 1.00001.00001.0000 

我希望它是這樣的:

06 BR0102 001.0000001.0000001.000 

我知道我可以只添加手動佔位零(如果我添加了一個佔位符等),但是有沒有比僅僅將它們添加到if語句中更有效的方式來輸出佔位符0?

預先感謝您。

回答

9

例如,您可以使用%08.4f進行零點填充。請注意,第一個數字是整個字段寬度,而不僅僅是小數點之前所需的位數。在你的例子中,3%3.4沒有效果。如果你想讓你的最後一個數字只有三位小數,那麼你需要%07.3f

%d格式更容易 - 在你的情況下,只需%02d應該這樣做。

3

下面的格式將幫助你。

float a = 1; 
int x = 1, y = 2; 
printf("06 BR%02d%02d %08.4f %08.4f %08.4f\n", x, y, a, a, a); 

輸出對我來說是

06 BR0102 001.0000 001.0000 001.0000 
相關問題