C言語で列のサイズを決定するには、%<number>d
。たとえば、%3d
そして、width = 3の列を提供します。私の問題は、%
は受け取る変数なので、%xd
(ここで、x
は、以前にプログラムで受け取った整数変数です)。しかし、それは機能していません。
これを行う他の方法はありますか?
これは次のようにして実行できます。
printf("%*d", width, value);
リーのコメントから:
精度サイズに*を使用することもできます。
printf("%*.*f", width, precision, value);
完全を期すために、POSIX準拠バージョンの printf()
を使用して、実際のフィールド幅(または精度)値をパラメーターリストの別の場所に置いて参照することもできます。 1から始まるパラメーター番号とそれに続くドル記号を使用します。
フィールドの幅または精度、あるいはその両方は、数字文字列の代わりに、アスタリスク「*」またはアスタリスクの後に1つ以上の10進数と「$」が続くことで示される場合があります。この場合、int引数はフィールドの幅または精度を提供します。負のフィールド幅は、左の調整フラグとそれに続く正のフィールド幅として扱われます。負の精度は欠落しているかのように扱われます。単一のフォーマットディレクティブが位置(nn $)引数と非位置引数を混在させる場合、結果は未定義です。
例:printf ( "%1$*d", width, value );