前へ | 次へ | 目次 | 索引 |
注意事項
scanf("%d", &n) |
次の形式は使用できません。
scanf("%d", n) |
field = %x |
この書式指定は次の形式に対応します。
field = 5218 field=5218 field= 5218 field =5218 |
次の例には対応しません。
fiel d=5218 |
情報を出力する場合の書式指定文字列には,次の文字を指定できます。
変換指定は次の文字で構成され,順序はここに示したとおりになります。
変換指定の例については, 第 2.6 節 のサンプル・プログラムを参照してください。
表 2-4 は,パーセント記号 (%) ( または %n$) というシーケンスと変換指定子の間に指定できる文字を示しています。これらの文字は省略可能ですが,指定する場合は, 表 2-4 に示した順に指定する必要があります。
文字 | 意味 | ||||||||
---|---|---|---|---|---|---|---|---|---|
フラグ | 次のフラグ文字を単独または任意の順序で組み合わせて,変換指定を変更することができる。
|
||||||||
|
|||||||||
フィールド幅 | 最小フィールド幅は 10 進整数定数または出力ソースによって指定できる。出力ソースを指定するには,アスタリスク (*) または *
n$ というシーケンスを使用する。ただし,
n は,書式指定の後の
n 番目の出力ソースを参照する。
最小フィールド幅は,書式ディレクティブの他のすべてのコンポーネントに従って変換を実行した後で考慮される。このコンポーネントは,次に示すように変換結果のパッド文字埋め込み処理に影響する。 変換の結果が最小フィールド幅より長い場合は,結果がそのまま書き込まれる。 変換の結果が最小幅より短い場合は,フィールド幅になるようにパッド文字が埋め込まれる。デフォルトではパッド文字はスペースである。 0 フラグが指定された場合は,パッド文字は 0 である。この場合,幅が 8 進数であることを意味するわけではない。デフォルト設定では,パッド文字は左側に埋め込まれ,マイナス記号が指定された場合は右側に埋め込まれる。 ワイド文字出力関数の場合は,フィールド幅はワイド文字の文字数で指定される。バイト出力関数の場合は,バイト数で指定される。 |
||||||||
. (ピリオド) | フィールド幅と精度を区切る。 | ||||||||
精度 | 精度は次のいずれかを定義する。
精度が他の変換指定子と組み合わせて指定された場合は,動作は未定義である。 精度は 10 進整数定数または出力ソースによって指定できる。出力ソースを指定するには,アスタリスク (*) または * n$ というシーケンスを使用する。ただし, n は,書式指定の後の n 番目の出力ソースを参照する。 ピリオドだけが指定されている場合は,精度は 0 であると解釈される。 |
||||||||
h,l,L (または ll) | h は,後続の d,i,o,u,x,X 変換指定子が
short int
または
unsigned short int
引数に適用されることを指定する。また,h は後続の n 変換指定子が
short int
引数を指すポインタに適用されることも指定する。
l (小文字のエル) は,後続の d,i,o,u,x,X 変換指定子が long int または unsigned long int 引数に適用されることを指定する。 l は,後続の n 変換指定子が long int 引数を指すポインタに適用されることも指定する。 OpenVMS Alpha システムでは,L または ll (2 つの小文字のエル) は,後続の d,i,o,u,x,X 変換指定子が __int64 または unsigned __int64 引数に適用されることを指定する。 (Alpha only) L は,後続の e,E,f,g,G 変換指定子が long double 引数に適用されることを指定する。 l は,後続の c または s 変換指定子が wchar_t 引数に適用されることを指定する。 h,l,L のいずれかが他の変換指定子と組み合わせて指定されている場合は,動作は未定義である。 OpenVMS VAX および OpenVMS Alpha システムでは, HP C int の値は long の値と同値である。 |
表 2-5 は,書式設定された出力の変換指定子を示しています。
指定子 | 出力の種類1 | 説明 |
---|---|---|
d,i | int 引数を符号付き 10 進形式に変換する。 | |
o | unsigned int 引数を符号なし 8 進形式に変換する。 | |
u | unsigned int 引数を符号なし 10 進形式に変換する (数値が 0〜4,294,967,295 の範囲の場合)。 | |
x, X | unsigned int 引数を符号なし 16 進形式 ( 先頭の 0x は付いている場合も付いていない場合もある ) に変換する。 x 変換の場合は英字 abcdef が使用され, X 変換の場合は英字 ABCDEF が使用される。 | |
f |
float
または
double
引数を [--]mmm.nnnnnn. という形式に変換する。次のように,n の数は精度指定の値に等しい。
値は適切な桁数に四捨五入される。 |
|
e,E | float または double 引数を [--]m.nnnnnnE<pm symbol>xx という形式に変換する。 n の数は精度によって指定される。精度が指定されていない場合は,デフォルトは 6 である。精度が 0 として指定され,# フラグが指定されている場合は,小数点は出力されるが,小数点以下の n は出力されない。精度が 0 で,# フラグが指定されていない場合は,小数点も出力されない。 e 変換の場合は 'e' が出力される。E 変換の場合は 'E' が出力される。指数には常に少なくとも 2 桁が含まれる。値が 0 の場合は,指数は 0 である。 | |
g,G | float または double 引数を f または e という形式に変換する ( または G 変換指定子が使用されている場合は E)。有効桁数は精度によって指定される。精度が 0 の場合は,有効桁数は 1 であると解釈される。使用される書式は引数の値に応じて異なる。変換の結果,指数が --4 より小さい場合や,精度以上になる場合にだけ,書式 e (または E) が使用される。それ以外の場合は,書式 f が使用される。結果の小数点以下の部分で後続の 0 は切り捨てられる。小数点以下に有効桁がある場合にだけ,小数点が出力される。 | |
c | バイト |
int
引数を
unsigned char
に変換し,結果のバイトを書き込む。
この変換指定子の前に省略可能な文字 l (小文字のエル) が指定されている場合は,この指定子は wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ないバイト数の場合は,パッド文字としてスペースが埋め込まれる。精度が指定されている場合は,動作は未定義である。 |
ワイド文字 | c 指定子の前に l (小文字のエル) が指定されていない場合は,
int
引数は,
btowc
を呼び出したかのようにワイド文字に変換され,結果の文字が出力される。
c 指定子の前に l (小文字のエル) が指定されている場合は,この指定子は wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ない文字数の場合は,指定された幅になるようにスペース文字が埋め込まれる。精度が指定されている場合は,動作は未定義である。 |
|
C | バイト | wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ないバイト数の場合は,指定された幅になるようにスペース文字が埋め込まれる。精度が指定されている場合は,動作は未定義である。 |
ワイド文字 | wchar_t 引数を,文字を表すバイト配列に変換し,結果の文字を出力する。フィールド幅が指定されていて,結果の文字がフィールド幅より少ない文字数の場合は,指定された幅になるようにスペース文字が埋め込まれる。精度が指定されている場合は,動作は未定義である。 | |
s | バイト |
char
型の文字配列を指すポインタである引数が必要である。この引数は,ヌル文字が検出されるか,精度指定によって示される文字数になるまで,文字を出力するために使用される。精度指定が 0 の場合や,指定されていない場合は,ヌル文字までのすべての文字が出力される。
この変換指定子の前に省略可能な文字 l( 小文字のエル ) が指定されている場合は,この指定子はワイド文字コードの配列をマルチバイト文字に変換し,マルチバイト文字を出力する。 wchar_t 型のワイド文字の配列を指すポインタが引数として必要である。ヌル・ワイド文字が検出されるか,精度指定によって示されるバイト数になるまで,文字が出力される。精度指定が省略されている場合や,変換されたバイト配列のサイズより大きい場合は,ワイド文字の配列の末尾にヌル・ワイド文字が必要である。 |
ワイド文字 | s 指定子の前に l (小文字のエル) が指定されていない場合は,この指定子は各マルチバイト文字に対して
mbrtowc
を呼び出したかのように,マルチバイト文字の配列を変換し,ヌル・ワイド文字が検出されるか,または精度指定によって示されるワイド文字の文字数になるまで,結果の文字を出力する。精度指定が省略されている場合や,変換された文字配列のサイズより大きい場合は,変換された配列の末尾にヌル・ワイド文字が必要である。
この変換指定子の前に l が指定されている場合は,引数は wchar_t 型の配列を指すポインタである。ヌル・ワイド文字が検出されるか,精度指定によって示されるワイド文字の文字数になるまで,この配列から文字が出力される。精度指定が省略されている場合や,配列のサイズより大きい場合は,配列の末尾にヌル・ワイド文字が必要である。 |
|
S | バイト | ワイド文字コードの配列をマルチバイト文字に変換し,マルチバイト文字を出力する。 wchar_t 型のワイド文字の配列を指すポインタが引数として必要である。ヌル・ワイド文字が検出されるか,または精度指定によって示されるバイト数になるまで,文字が出力される。精度指定が省略されている場合や,変換されたバイト配列のサイズより大きい場合は,ワイド文字の配列の末尾にヌル・ワイド文字が必要である。 |
ワイド文字 | 引数は wchar_t 型の配列を指すポインタである。ヌル・ワイド文字が検出されるか,精度指定によって示されるワイド文字の文字数になるまで,この配列から文字が出力される。精度指定が省略されている場合や,配列のサイズより大きい場合は,配列の末尾にヌル・ワイド文字が必要である。 | |
p | void を指すポインタが引数として必要である。ポインタの値が 16 進数として出力される。 | |
n | 整数を指すポインタが引数として必要である。書式設定された出力関数に対するこの呼び出しでこれまで出力ストリームに書き込まれた文字数が整数に代入される。引数は変換されない。 | |
% | パーセント記号を出力する。変換は実行されない。完全な変換指定は %% である。 |
前へ | 次へ | 目次 | 索引 |