次の方法で共有


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

以下の内容は、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);

最大長の文字列を 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