:printf、:sprintf、:fprintfコマンドの書式指定フィールド
%[flags][width][precision]type
各書式指定フィールドでは、特定の書式を表す1個の文字または数字を指定する。最も簡単な書式指定は、パーセント記号(%)と1個のtype文字だけで行う(%sなど)。パーセント記号に続く文字が書式指定として無意味であると、その文字が出力される。たとえば、パーセント記号を出力するには、%%と指定する。
flags
フラグ。出力の位置を調整し、符号、空白、小数点、および8進数と16進数のプレフィックスを表示する。1つの書式指定に、複数のフラグを指定できる。
フラグ | 意味 |
- | 左詰め。右側には常に空白が埋め込まれる。 |
+ | 正の符号付きの値を変換した時にプラス記号が明示的に生成される。 |
0(ゼロ) | 他にフラグが指定されていない限り、文字0(ゼロ)が変換結果の左側に詰め込まれる(ただし、符号などの前置文字はこの埋め込みに先行する)。 |
空白(' ') | 正の符号付きの値を変換した時に、符号の位置に空白が生成される。 |
# | 特定の変換動作が変更される。o変換に対しては0(ゼロ)が、x/X変換に対しては0x/0X(ゼロエックス)が前置される。eEfgG変換では小数部がなくても小数点が生成される。 |
width
フィールド幅。符号なしの10進整数で指定して、表示する最小文字数を制御する。出力文字数が指定幅より少ない場合は、-フラグ(左詰め)指定の有無によって、値の左または右に最小幅まで空白(0フラグが指定されていると0。この場合左詰めは無効)が追加される。
整数の代わりにアスタリスク(*)が指定されると、コマンド引数をフィールド幅として取り込む。
precision
精度。ピリオド(.)に続く符号なしの10進整数で指定される。単独のピリオドは精度ゼロを示す。ピリオドに続けてアスタリスク(*)が指定されると、コマンド引数を精度として取り込む。その値が負の値の場合、精度ゼロとして扱われる。データ型によって指定する値の意味が異なる。
データ型 | 意味 |
d、o、u、x、X | 最小の生成桁数 |
e、E、f | 小数部についての生成桁数 |
g、G | 生成する最大の有効桁数 |
s | 生成する最大文字数 |
type
型フィールド文字。対応するコマンド引数を文字、文字列、数値のいずれと解釈するかを指定する。
文字 | 出力書式 |
c | 文字 |
d | 符号付き10進整数 |
o | 符号なし8進整数 |
u | 符号なし10進整数 |
x、X | 符号なし16進整数 |
e、E | [-]d.ddde+|-dd形式符号付きの値。precisionがゼロで#フラグが指定されていない場合、小数点は省略される。precision桁の小数部と最低2桁の指数部が生成される。デフォルトの精度は6。 |
f | [-]d.ddd形式の符号付きの値。小数点の後の桁数は要求された精度によって決定される。 |
g、G | fまたはeの変換のうち、指定された値および精度を表現できる短い方の変換。e変換は、値の指数部が、-4より小さいかprecisionで指定された数よりも大きい場合にのみ使う。後に続く0(ゼロ)は切り捨てられ、小数点は1個または複数の数字が続く場合にのみ表示される。 |
s | 文字列。最初のNULL文字まで、またはprecisionの範囲まで表示される。 |