右側のすべての出力をどのように並べるのが最適ですか?Cで字下げして印刷
例:
2
4
8
16
32
64
128
256
512
1024
2048
...
134217728
私の最後の数がN桁を持っている場合は、どのようにして(この場合はただ一桁を持っている)最初の1つを出力する(N - 1)左のスペース:2のべき乗のための?
右側のすべての出力をどのように並べるのが最適ですか?Cで字下げして印刷
例:
2
4
8
16
32
64
128
256
512
1024
2048
...
134217728
私の最後の数がN桁を持っている場合は、どのようにして(この場合はただ一桁を持っている)最初の1つを出力する(N - 1)左のスペース:2のべき乗のための?
を生成します。ですから、最大桁数を計算した後、あなたが行うことができます:
printf("%*d\n", max_digits, value);
ここで言ったようにあなたはprintf
の幅トリックを使用することができます。Printf reference
printf ("Width trick: %*d \n", 5, 10);
あなたは*
を使用してprintf()
に、計算フィールド幅を供給することができ
Width trick: 10
例
int main(int argc, char *argv[]) {
for (int i=2; i<134217729;i=i*2)
printf("%*d\n",20, i);
return 0;
}
出力
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
数字の代わりにcharを使用するとどうなりますか? –
これはまったく同じですが、*フラグ*は各変換指定子*で同じです。 –
@ViníciusGuardianoSouza 'strlen(char *)'を使ってCで文字列の長さを見つけ出し、それに応じてフォーマットすることができます。 –
Hont:printf' 'のためのフォーマットパラメータをルックアップ。 –
'printf'のフィールド幅に' * 'を使うことができます。次に、パラメータから幅を取得します。 – Barmar
[printf'ファミリの機能のドキュメント](http://en.cppreference.com/w/c/io/fprintf)は、このサイトよりもずっと良いリソースです。 – WhozCraig