維持しなければならないコードの中に、フォーマット指定子%*s
。誰がこれが何であり、なぜ使用されるのか教えてもらえますか?
その使用例は次のとおりです。
fprintf(outFile, "\n%*s", indent, "");
- 幅はフォーマット文字列では指定されませんが、フォーマットする必要がある引数に先行する追加の整数値引数として指定されます。
そのため、「インデント」は、パラメータリストでそれに続く文字列に割り当てる領域を指定します。
そう、
printf("%*s", 5, "");
と同じです
printf("%5s", "");
これは、ループを回避して、ファイルにスペースを入れる良い方法です。
NULLで終了(パック)されていないバッファーでは「%* s」を使用しないでください。「length」フィールドのみが出力されると考えられます。
* fprintfは、出力がn文字幅になるまで出力を埋め込みます。ここで、nは、変更された型で表されるa引数の直前に格納された整数値です。
printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
幅はフォーマット文字列では指定されませんが、フォーマットする必要がある引数に先行する追加の整数値引数として指定されます。
例:printf("%*s", 4, myValue);
はprintf("%4s", myValue);
と同等です。
書式指定子%4sは、フィールド幅4の文字列を出力します。つまり、printfは少なくとも4文字の位置で値を表示します。
出力される値がless
で、4文字位置よりも広い場合、値はright justified
はデフォルトでフィールドにあります。
値がgreater
で4文字位置よりも広い場合、フィールド幅expands
は適切な文字数に対応します。
値を左揃えするには、負の整数を使用してフィールド幅を指定します。