printf在C中带有前导零

时间:2011-02-15 17:58:05

标签: c formatting printf

我有一个浮点数,例如4917.24。我想将它打印到小数点前总共有五个字符,前导零,小数点后三位数。

我在我正在使用的嵌入式系统上尝试了printf("%05.3f", n),但它打印了*****。我的格式说明符是否正确?

1 个答案:

答案 0 :(得分:56)

您的格式说明符不正确。从我机器上的printf()手册页:

  

0 零' 0 '字符表示应使用零填充而不是空填充。如果两者都使用,则“ - ”会覆盖“ 0 ”;

     

场宽:   一个可选的数字字符串,指定字段宽度;如果输出字符串的字符数少于字段宽度,则在左侧(或右侧,如果已给出左调整指示符)进行空白填充以构成字段宽度(请注意,前导零是标记,但嵌入的零是字段宽度的一部分;

     

精确度:一个可选的句点,“ . ”,后跟一个可选的数字字符串,给出精确度,指定小数点后显示的位数, e f 格式,或字符串中要打印的最大字符数;如果缺少数字字符串,则将精度视为零;

对于您的情况,您的格式为%09.3f

#include <stdio.h>

int main(int argc, char **argv)
{
  printf("%09.3f\n", 4917.24);
  return 0;
}

输出:

$ make testapp
cc     testapp.c   -o testapp
$ ./testapp 
04917.240

请注意,这个答案取决于您的嵌入式系统具有printf()实现,这些实现符合这些细节的标准 - 许多嵌入式环境具有此类实现。