c - %* s形式指定子はどういう意味ですか?

Translate

私が維持しなければならないいくつかのコードで、私はフォーマット指定子を見ました%*s。誰かがこれが何であるか、そしてなぜそれが使われるのか教えてもらえますか?

その使用例は次のとおりです。

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

すべての答え

Translate

これは、フィールドの幅を動的に指定するために使用されます:

  • 幅はフォーマット文字列では指定されませんが、フォーマットする必要のある引数の前に追加の整数値引数として指定されます。

したがって、「インデント」は、パラメータリストでそれに続く文字列に割り当てるスペースの量を指定します。

そう、

printf("%*s", 5, "");

と同じです

printf("%5s", "");

これは、ループを回避して、ファイルにいくつかのスペースを配置するための優れた方法です。

ソース
Translate

「長さ」フィールドのみを出力すると考えて、NULLで終了(パック)されていないバッファーで「%* s」を使用しないでください。

ソース
Translate

フォーマット指定子%4sは、フィールド幅4の文字列を出力します。つまり、printfは少なくとも4文字の位置で値を表示します。

出力する値がless幅が4文字の位置よりも大きい場合、値はright justifiedデフォルトではフィールドにあります。

値がgreater4文字以上の幅、フィールド幅expands適切な文字数に対応するため。

値を左揃えにするには、負の整数を使用してフィールド幅を指定します。

参照:Java™プログラミング方法(初期オブジェクト)、第10版

ソース
Translate

* fprintfが出力をn文字幅になるまでパディングします。ここで、nは、変更された型で表される直前の関数引数に格納されている整数値です。

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
ソース
Translate

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

幅はフォーマット文字列では指定されませんが、フォーマットする必要のある引数の前に追加の整数値引数として指定されます。

例えば:printf("%*s", 4, myValue);と同等ですprintf("%4s", myValue);.

ソース
Leave a Reply
You must be logged in to post a answer.
著者について