4

これを行う方法はないと確信していますが、疑問に思っていたので、ここに行きます...

ユーザーからいくつかの int 値を取得し、最初の値が最大であることを知っているとします。残りの数値を印刷するときに、最初の int 値の長さをパディングとして使用する方法はありますか?

フォーラムを閲覧すると、次のように int (n) の長さを判断できることがわかりました。

l = (int) log10(n) + 1;

5 のパディングを使用すると、印刷は次のようになります。

printf("%5d", n);

だから私が知りたいのは、5の代わりにlを使用する方法があるかどうかです...

ありがとうございました!

4

2 に答える 2

8

次のようにします。

int n = <some value>;
int i = (int) log10(n) + 1;
printf("%*d", i, n);

は、 に引数として渡される*のプレースホルダーとして機能します。printf()

于 2013-05-21T07:48:53.257 に答える
0

snprintf()次のように、値に対して出力される文字数を取得するためにも使用できます。

char buff[100];
int width = snprintf (buff, sizeof(buff), "%d", number1);

ただし、希望の幅が得られても、*フォーマット修飾子を使用できます。

printf( "%*d %*d\n", width, number1, width, number2);

その修飾子は、次の引数を使用して、書式文字列で固定された幅ではなく、動的な幅を指定します。

于 2013-05-21T07:47:53.670 に答える