Cの先行ゼロ付きprintf



4917.24 のような浮動小数点数があります .常に小数点の前に 5 文字、先頭に 0 を付け、次に小数点以下 3 桁になるように印刷したいと思います。


printf("%05.3f", n) を試してみました 私が使用している組み込みシステムでは、 ***** を出力します .フォーマット指定子は正しいですか?


答え:


フォーマット指定子が正しくありません。 printf() から 私のマシンの man ページ:



あなたの場合、フォーマットは %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() を持っていることを条件としていることに注意してください これらの詳細について標準に準拠した実装 - 多くの組み込み環境は準拠していません