こんにちは、もがちゃんです
fprintf関数、printf関数、sprintf関数のformatパラメータについて記載します
目次
formatパラメータの構成
formatが指す文字列(書式)は、以下の2つの文字列から構成されます
- 通常の文字列
- 変換指定文字列
変換指定文字列の形式
変換指定文字列の形式は、以下の形式で指定します
%[フラグ][フィールド幅][.精度][長さ修飾子]変換指定子 ※[]で括られている部分は省略可能
変換指定文字列のフラグについて
変換指定文字列のフラグには、以下の種類が存在します
フラグ | フラグの意味 |
---|---|
-(マイナス) | 変換結果をフィールド内に左詰めにする |
+(プラス) | 変換結果が正,負に関わらず符号を出力する |
(空白) | 変換結果の最初の文字が符号でない場合か 符号付き変換の結果が 0 の場合に空白を結果の前に付ける |
#(シャープ) | 結果を代替形式に変換する |
0(ゼロ) | 出力文字数が最小フィールド幅未満の場合は 0 を埋める |
代替形式
代替形式は、変換指定子ごとに以下の変換が行われます
変換指定子 | 変換指定子に対する代替形式意味 |
---|---|
o(オー) | 必要な場合に精度を増加し結果の最初を 0 にする |
x,X | 0 でない結果の前に 0x を置く |
f,F e,E a,A | 小数点文字の後ろに数字が続かない場合でも 常に小数点文字を表示する |
g,G | 小数点文字の後ろに数字が続かない場合でも 常に小数点文字を表示する. 後ろに続く 0 を結果から取り除かない |
変換指定文字列の長さ修飾子について
変換指定文字列の長さ修飾子には、以下の種類が存在します
長さ修飾子 | 長さ修飾子の意味 |
---|---|
hh | 対応する実引数の型がchar型であることを指定する |
h | 対応する実引数の型がshort int型であることを指定する |
l(エル) | 対応する実引数の型がlong int型であることを指定する |
ll(エルエル) | 対応する実引数の型がlong long int型であることを指定する |
j | 対応する実引数の型がintmax_t型であることを指定する |
z | 対応する実引数の型がsize_t型であることを指定する |
t | 対応する実引数の型がptrdiff_t型であることを指定する |
L | 対応する実引数の型がlong double型であることを指定する |
変換指定文字列の変換指定子について
変換指定文字列の変換指定子には、以下の種類があり、それぞれ変換内容が異なります
変換指定子 | 変換指定子の意味 |
---|---|
d,i | int型を符号付き10進表記に変換する |
o | unsigned int型を符号なし8進表記に変換する |
u | unsigned int型を符号なし10進表記に変換する |
x | unsigned int型を符号なし16進数表記(abcdef)に変換する |
X | unsigned int型を符号なし16進数表記(ABCDEF)に変換する |
f,F | 浮動小数点数を表すdouble型を[-]ddd.ddd形式の10進表記に変換する |
e,E | 浮動小数点数を表すdouble型を[-]d.ddde±dd形式の10進表記に変換する |
g,G | 浮動小数点数を表すdouble型を有効けた数を指定する精度に従い f,F形式 or e,E形式に変換する |
a,A | 浮動小数点数を表すdouble型を[-]0xh.hhhp±d形式に変換する hは16進文字 |
c | int型をunsigned char型の文字に変換する |
s | 文字型配列の先頭ポインタからnull終端の前までの文字列に 変換する |
p | void型ポインタの表示文字列に変換する |
n | 符号付き整数型へのポインタに出力済み文字数を出力する |
% | %文字を出力する |