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

时间:2013-01-21 18:35:46

标签: c formatting placeholder output printf

  

可能重复:
  Extra leading zeros when printing float using 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

现在输出如下:

06 BR12   1.00001.00001.0000

我希望它如下:

06 BR0102   001.0000001.0000001.000

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

提前谢谢你。

2 个答案:

答案 0 :(得分:9)

例如,您可以使用%08.4f进行零填充。请注意,第一个数字是整个字段宽度,而不仅仅是小数点前所需的位数。在您的示例中,3中的%3.4无效。如果您希望最后一个号码只有三位小数,那么您需要%07.3f

%d格式更容易 - 在您的情况下,只需%02d即可。

答案 1 :(得分: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