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); // data110桁表示

         printf("%.*f\n", 1, data2); // data2を小数点以下1桁で表示

 

 フィールド幅と精度には,int型の定数か変数を指定する必要があります。0はフラグとして扱われるので,指定することができません。

 

 

戻る