少し詳しい変換仕様の説明

printf関数やscanf関数でおなじみの変換仕様ですが、実はとても奥が深いものです。特にsscanf関数では、変換仕様を使いこなすことにより様々な形での文字列の編集が行えます。ここでは、具体的な使い方を挙げながら変換仕様について説明してみようと思います。

 

1.出力変換仕様

printffprintfsprintf などの書式出力関数で使われる変換仕様です。以下のような形式をしています。

 %  [フラグ]
 -
 +
 空白
 #
 0
 [最小フィールド幅]
 10進数字列
 *
 [精度]
 .10進数字列
 .*
 .
 [変換修飾子]
 h
 l
 L
 変換指定子
 d,i,o,u
 x,X
 f,e,E,g,G
 c,s,p,n
 %
 

[ ]の中は省略が可能です。

 

(1) 変換指定子

変換の型を指定する1文字です。

(補足)

printfのような書式出力関数は、引数の個数を変える「可変長引数」を持つ関数ですが、可変長の部分には「既定の実引数拡張」を適用します。
これは、charとshort intはintに(汎整数拡張)、 floatはdoubleにそれぞれ拡張するものです。ですから、d, i, c 変換に対してchar型やshort型の実引数を与えた場合にはint型に汎整数拡張が行われます。また、f, e, E, g, G変換にfloat型の実引数を与えた場合には、doubleに拡張されます。

(1) フラグ

変換指定の意味を修飾します。複数同時に使用することが可能です。その場合、順序は任意です。

 

参考文献

▲▲TOP▲▲