printf 書式指定子

提供: Appmethod Topics
移動先: 案内検索


Printf、wprintf への移動


出力書式指定子には、次の形式があります:

% [flags] [width] [.prec] [F|N|h|l|L] type_char

各書式指定子は、パーセント文字(%)で始まります。

省略可能な書式文字列の構成要素

これらは、出力書式の一般的な性質で、書式文字列の、省略可能な文字列、指定子、修飾子で制御されます:

構成要素    省略可能/必須 意味/機能

[flags]

(省略可)

これらは、任意の順番および組み合わせで表示できます。

  • - = 結果を左詰めにし、右側を空白で埋めます。 指定されない場合は、結果が右詰めされ、左側がゼロまたは空白で埋められます。
  • + = 符号付きの変換結果は常にプラス記号(+)またはマイナス記号(-)で始まります。
  • 空白 = 値が負でない場合、出力はプラス記号ではなく空白で始まります。負の値は依然としてマイナス記号で始まります。
    1. = 引数が代替形式で変換されることを指定します。

メモ:プラス記号(+)と空白()が両方とも指定された場合は、プラス記号が優先します。

[width]

(省略可)

幅指定子は、出力値のフィールド幅の下限を設定します。

幅の指定方法は以下のいずれかです。

  • 10 進数字の文字列を使った直接指定
  • アスタリスク(*)を使った間接指定

幅指定子にアスタリスクを使用する場合、関数呼び出しにおける次の引数(int でなければなりません)で出力フィールド幅の下限を指定します。

フィールド幅が指定されていないか小さい場合でも、フィールドの切り捨ては行われません。 変換結果がフィールド幅より長い場合、変換結果が収まるようにフィールドが拡張されます。

出力幅への影響

n = 少なくとも n 文字が出力されます。 出力値の文字数が n より少ない場合、出力は空白で埋められます(左詰めのフラグが指定されている場合は右側が埋められ、それ以外の場合は左側が埋められます)。

0n = 少なくとも n 文字が出力されます。出力値の文字数が n より少ない場合、出力の左側がゼロで埋められます。

'*' = 引数リストに幅指定子が指定されます。これは、書式設定の対象となる実際の引数より先に現れる必要があります。

[prec]

(省略可)

精度指定子。出力する最大文字数。整数の場合は、出力する最小桁数。

[F|N|h|l|L]

(省略可)

各種 printf 関数で次の入力引数 arg[f] がどう解釈されるかは、以下の修飾子で決まります。

プレフィックス 書式指定子 指定される型

F

p s

far ポインタ

N

n

near ポインタ

h

d i o u x X

short int

l

d i o u x X

long int

l

e E f g G

double

L

e E f g G

long double

L

d i o u x X

__int64

h

c C

シングルバイト文字

l

c C

ワイド文字

h

s S

シングルバイト文字列

l

s S

ワイド文字列

すべての printf 関数で対応する入力引数 arg のデータ型がどう解釈されるかは、これらの修飾子に左右されます。 F と N はどちらも入力変数 arg を再解釈します。    通常、%p 変換、%s 変換、%n 変換のいずれかの場合、arg はメモリ モデルのデフォルト サイズのポインタです。 h、l、L は、数値データ入力引数のデフォルト サイズを解除して再設定します。 h も l もポインタ(p、n)型には影響を及ぼしません。

type_char

(必須)

型文字

関連項目