web-dev-qa-db-ja.com

負の符号と可変長の数値を考慮してprintfをパディングするにはどうすればよいですか?

ログファイルにいくつかの数値を出力しようとしていますが、printf関数を介してfloatの負荷を埋めて以下を生成したいと思います。

 058.0
 020.0
 038.0
-050.0
 800.0
 150.0
 100.0

現在、私はこれを行っています:

printf("% 03.1f\n", myVar);

... myVarはフロートです。そのステートメントからの出力は次のようになります。

58.0
20.0
38.0
-50.0
800.0
150.0
100.0

From 私が読んだもの この投稿の冒頭で述べた出力をコードが生成することを期待しますが、明らかに何かが間違っています。一度に1つのフラグしか使用できませんか? ..またはここで何か他のことが起こっていますか?

30
Jon Cage

幅指定子は完全な幅です。

printf("%05.1f\n", myVar);  // Total width 5, pad with 0, one digit after .

期待されるフォーマットを取得するには:

printf("% 06.1f\n", myVar);
26
Erik

エリックをフォローしますが、

printf("% 6.1f\n", myVar);

また動作します。

0
Ben