書式指定子の変換
Scanf, wscanf への移動
一部の scanf の書式指定子では、次のような変換が行われます。
書式指定子 | 変換 |
---|---|
単一文字(%c) |
この指定子は、次の文字(空白文字を含む)を読み取ります。 1 つの空白文字を飛ばして空白でない次の文字を読み取るには、%1s を使用します。 |
文字配列(%[W]c) |
[W] = 幅指定子 アドレス引数は、文字の配列(char arg[W])を指すポインタです。配列は W 個の要素から構成されます。 |
文字列(%s) |
アドレス引数は、文字の配列(char arg[])を指すポインタです。 文字列 s の長さ(単位は文字数)を n とすると、配列サイズは少なくとも (n+1) バイトが必要です。 スペース文字または改行文字が出現すると入力フィールドは終了します。 文字列の最後に NULL 終端文字が自動的に付加され、配列の最後の要素として格納されます。 |
浮動小数点数(%e、%E、%f、%g、%G) |
入力フィールドに含める浮動小数点数は、次の一般書式に従ったものでなければなりません。
[ ] で囲まれた項目は任意指定です。ddd は桁数(10 進、8 進、16 進)を表します。 また、+INF、-INF、+NAN、-NAN は浮動小数点数と見なされます。符号(+ または -)を付けて、大文字で表記する必要があります。 |
符号なし(%d、%i、%o、%x、%D、%I、%O、%X、%c、%n) |
unsigned の文字、unsigned の整数、または unsigned long を指すポインタは、文字、整数、または long を指すポインタが使用できる変換であればどの変換の中でも使用できます。 |
検索セット(%[...]、%[^...]) |
角かっこで囲まれた一連の文字は、s 型の文字と置き換えることができます。 アドレス引数は、文字の配列(char arg[])を指すポインタです。 角かっこで囲まれた一連の文字によって、文字列(入力フィールド)を構成している可能性がある文字の検索セットを指定します。 角かっこ内の最初の文字がキャレット(^)であれば、検索セットは反転し、角かっこ内のものを除くすべての ASCII 文字を含むと解釈されます。 (キャレットは、通常、最初のキャレット以外に明示的に指定されていなければ、反転後の検索セットに含められます。) 入力フィールドは文字列です(空白文字は区切り記号と見なされません)。...scanf は、検索セット(または反転検索セット)に含まれない文字が初めて現れるまで、対応する入力フィールドを読み取ります。 検索セットの範囲指定に関する規則 1. ハイフン(-)の前の文字は、ハイフンの後の文字よりも文字列比較で小さいものでなければなりません。 2. ハイフンをセット内の最初または最後の文字にすることはできません (最初または最後にあるハイフンは、範囲を定義するものではなく、ただのハイフン文字と見なされます)。 3. ハイフンの両側の文字は、範囲の両端を表すものでなければならず、他の範囲に含まれてはなりません。 |