3

重複の可能性:
printfを使用してfloatを印刷するときに、余分な先行ゼロがありますか?

このプログラムの出力は別のプログラムの入力として使用されるため、この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

プレースホールディングゼロを手動で追加できることは知っていますが(i <10の場合、プレースホルダーを追加するなど)、単にifステートメントにプレースホルダーゼロを追加するよりも効率的な方法はありますか?

前もって感謝します。

4

2 に答える 2

9

%08.4fたとえば、でゼロパッドを使用できます。最初の数値は、小数点以下の桁数だけでなく、フィールド幅全体であることに注意してください。あなたの例では、3in%3.4は効果がありません。最後の数字の小数点以下3桁だけにしたい場合は、%07.3fその数字が必要になります。

%dフォーマットはもっと簡単です-あなたの場合、それを%02dするべきです。

于 2013-01-21T18:36:59.077 に答える
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
于 2013-01-21T18:55:44.573 に答える