Share via


scanf 関数の型フィールド文字

更新 : 2007 年 11 月

以下の内容は、scanf 系のすべての関数 (scanf_s などのセキュリティが強化されたバージョンを含む) に当てはまります。

type 文字は、唯一の必須書式指定フィールドであり、省略可能な書式指定フィールドに続けて指定します。type 文字によって、対応する引数を文字、文字列、または数値のいずれとして解釈するかが指定されます。

scanf 関数の型フィールド文字

文字

必要な入力の種類

引数の型

セキュリティが強化されたバージョンのサイズ引数

c

文字scanf 関数で使用する場合は 1 バイト文字、wscanf 関数で使用する場合はワイド文字を指定します。c を指定すると、通常は読み飛ばされる空白文字も読み取られます。次の非空白 1 バイト文字を読み取るには %1s、次の非空白ワイド文字を読み取るには %1ws を使用します。

scanf 関数で使用する場合は char へのポインタ、wscanf 関数で使用する場合は wchar_t へのポインタ。

必ず指定します。サイズには、null 終端文字用の領域は含まれません。

C

反対のサイズの文字。scanf 関数で使用する場合はワイド文字、wscanf 関数で使用する場合は 1 バイト文字を指定します。C を指定すると、通常は読み飛ばされる空白文字も読み取られます。次の非空白 1 バイト文字を読み取るには %1s、次の非空白ワイド文字を読み取るには %1ws を使用します。

scanf 関数で使用する場合は wchar_t へのポインタ、wscanf 関数で使用する場合は char へのポインタ。

必ず指定します。サイズ引数には、null 終端文字用の領域は含まれません。

d

10 進整数。

int へのポインタ。

不可。

i

整数。入力文字列が "0x" または "0X" で始まる場合は 16 進数、文字列が "0" で始まる場合は 8 進数、それ以外は 10 進数。

int へのポインタ。

不可。

o

8 進整数。

int へのポインタ。

不可。

u

符号なし 10 進整数。

unsignedint へのポインタ。

不可。

x

16 進整数。

int へのポインタ。

不可。

e, E, f, g, G

浮動小数点値。省略可能な符号 (+ または –)、小数点を含む 1 つ以上の連続する 10 進数、および必要に応じて符号付き整数値が続く省略可能な指数部 ("e" または "E") から構成されます。

float へのポインタ。

不可。

n

ストリームからもバッファからも読み取られません。

int へのポインタ。scanf 関数または wscanf 関数の現在の呼び出しで、その時点までにストリームまたはバッファから読み取られた文字数が格納されます。

不可。

s

最初の空白文字 (空白、タブ、または改行) までの文字列。空白文字で区切られていない文字列を読み取るには、角かっこ ([ ]) で囲みます。「scanf 関数の文字幅指定」の説明を参照してください。

scanf 関数で使用する場合は 1 バイト文字配列、wscanf 関数で使用する場合はワイド文字配列。どちらの場合も、文字配列は、入力フィールドと自動的に追加される終端の NULL 文字を格納するために十分な大きさである必要があります。

必ず指定します。サイズには、null 終端文字用の領域が含まれます。

S

最初の空白文字 (空白、タブ、または改行) までの反対のサイズ文字列。空白文字で区切られていない文字列を読み取るには、角かっこ ([ ]) で囲みます。「scanf 関数の文字幅指定」の説明を参照してください。

scanf 関数で使用する場合はワイド文字配列、wscanf 関数で使用する場合は 1 バイト文字配列。どちらの場合も、文字配列は、入力フィールドと自動的に追加される終端の NULL 文字を格納するために十分な大きさである必要があります。

必ず指定します。サイズには、null 終端文字用の領域が含まれます。

scanf では、a 指定子および A 指定子 (「printf 関数の型フィールド文字」を参照) は使用できません。

このサイズ引数は、必要に応じて適用する引数の直後のパラメータ リストに含めて渡す必要があります。たとえば次のようなコードがあるとします。

char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);

このコードは、1 文字を c に読み込み、10 進数を i に読み込み、最大 10 文字の文字列を string1 に読み込み、最大 8 文字の文字列を string2 に読み込みます。null 終端文字の領域を確保するために、バッファ サイズは、幅の指定より少なくとも 1 多く確保する必要があります。

使用する関数が 1 バイト文字用またはワイド文字用のどちらのバージョンであるかに関係なく、書式文字列は、1 バイト文字またはワイド文字の入力を処理できます。scanf 関数と wscanf 関数を使用して 1 バイト文字またはワイド文字を読み取るときは、次の表の書式指定子を使用します。

文字の種類

使用する関数

書式指定子

シングル バイト文字

scanf 関数

c、hc、または hC

シングル バイト文字

wscanf 関数

C、hc、または hC

ワイド文字

wscanf 関数

c、lc、または lC

ワイド文字

scanf 関数

C、lc、または lC

scanf 関数と wscanf 関数を使用して文字列をスキャンするには、上の表で c と C の代わりに s と S の型指定子を使用します。

参照

参照

scanf、_scanf_l、wscanf、_wscanf_l