Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';printf';在C中有前导零_C_Formatting_Printf - Fatal编程技术网

';printf';在C中有前导零

';printf';在C中有前导零,c,formatting,printf,C,Formatting,Printf,我有一个浮点数,比如4917.24。我想把它打印成在小数点前始终有五个字符,前导零,然后在小数点后有三位数字 我在正在使用的嵌入式系统上尝试了printf(“%05.3f”,n),但它打印***。格式说明符是否正确?您的格式说明符不正确。从我的机器上的printf()手册页: 0零'0'字符,指示应使用零填充而不是空白填充。如果同时使用了“-”,则“

我有一个浮点数,比如
4917.24
。我想把它打印成在小数点前始终有五个字符,前导零,然后在小数点后有三位数字


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

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

0
零'
0
'字符,指示应使用零填充而不是空白填充。如果同时使用了“
-
”,则“
<0
”会覆盖“
<0”

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

精度:可选句点“
”,后跟可选数字字符串,给出精度,指定小数点后出现的位数,用于ef格式,或从字符串打印的最大字符数;如果缺少数字字符串,则将精度视为零

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

#include <stdio.h>

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

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

谢谢,我看到了我所犯的错误。让它在PC上运行,我的嵌入式系统仍然没有正确格式化,将不得不做一个变通。请注意,微软的printf()显然不是在浮点数字上加前导零。
$ make testapp
cc     testapp.c   -o testapp
$ ./testapp 
04917.240