質問

保守する必要のあるコードには、フォーマット指定子%* s があります。誰がこれが何であり、なぜ使用されるのか教えてもらえますか?

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

fprintf(outFile, "\n%*s", indent, "");
役に立ちましたか?

解決

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

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

so" indent"パラメータリストでそれに続く文字列に割り当てる領域を指定します。

だから、

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

は次と同じ

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

ループを避けて、ファイルにスペースを入れるのに便利な方法です。

他のヒント

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

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

  

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

eg: printf("%* s&quot ;, 4、myValue); printf("%4s&quot ;, myValue); と同等です。 p>

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

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

値が 4文字位置よりも広いの場合、フィールド幅は適切な文字数に合わせて expands します。

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

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

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top