<printf関数のオプション指定>
printf関数では,出力の体裁を整えるために,%と変換指定子との間にオプション指示子を入れることができます。
(構文) %[フラグ][フィールド幅][.精度][変換修飾子]変換指定子
<フラグ>
記号 |
意味 |
- |
左詰表示(省略時は右詰) |
+ |
符号を付ける(省略時は"-"符号のみ) |
# |
%xのときは0xを,%oのときは0を付加 |
0 |
0を詰める |
(例) printf("右詰 :%10s%10s\n",str1,str2);
printf("左詰 :%-10s%-10s\n",str1,str2);
printf("符号あり:%+d\n", a);
printf("8進表示:%#o\n", b);
printf("16進表示:%#x\n", b);
<フィールド幅>
数値の出力幅を指定することができます。データの桁が指定幅よりも小さいときには左に空白が埋められ,データの桁が指定幅より大きいときは指定幅は無視されます。
(例) printf("%10d\n", a);
<精度>
浮動小数点数の小数点以下の桁数を指定することができます。省略すると小数点以下6桁で出力します。
(例) printf("%9.2f\n",
x);
<変換修飾子>
l:対応する引数をlong型で変換
h:対応する引数をshort型で変換
L:対応する引数をlong double型で変換
<フィールド幅と精度を引数で指定>
printf関数のオプション指定では,フィールド幅と精度を引数を使って可変にすることができます。
(構文) printf("%*.*変換指定子",フィールド幅,精度,引数);
(例) printf("%*d\n", 10, data1); // data1を10桁表示
printf("%.*f\n",
1, data2); // data2を小数点以下1桁で表示
フィールド幅と精度には,int型の定数か変数を指定する必要があります。0はフラグとして扱われるので,指定することができません。