C格式化字符串 - 如何将前导零添加到float和int值?

use*_*976 3 c formatting printf placeholder output

可能重复:
使用printf打印浮动时额外的前导零?

我试图让这个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
Run Code Online (Sandbox Code Playgroud)

现在输出看起来像这样:

06 BR12   1.00001.00001.0000
Run Code Online (Sandbox Code Playgroud)

我希望它像下面这样:

06 BR0102   001.0000001.0000001.000
Run Code Online (Sandbox Code Playgroud)

我知道我可以手动添加占位零(如果我<10,添加一个占位符等)但是有一种更有效的方法输出占位符零而不是简单地在if语句中添加它们吗?

先感谢您.

Car*_*rum 9

%08.4f例如,您可以使用零填充.请注意,第一个数字是整个字段宽度,而不仅仅是小数点前所需的位数.在您的示例中,3in %3.4无效.如果你想让你的最后一个数字只有三个小数位,你就会想要%07.3f那个.

%d格式更容易-你的情况,只是%02d应该这样做.