次の方法で共有


scanf 型フィールド文字

次の情報は、 scanf など、安全なバージョンを含む scanf_s関数ファミリのいずれかに適用されます。

type 文字だけが必須の書式フィールドであり、任意の省略可能な書式フィールドをその後に続けて指定します。 type 文字は、関連付けられた引数が、文字、文字列、または数として解釈されるかどうかを決定します。

scanf 関数の type 文字

文字 必要な入力の型 引数の型 安全なバージョンのサイズ引数ですか。
c 文字です。 scanf 関数で使用する場合は 1 バイト文字を指定し、 wscanf 関数で使用する場合はワイド文字を指定します。 空白文字は通常はスキップされますが、 c が指定されている場合は読み取られます。 他の型フィールドとは異なり、フィールド幅指定子は、最大ではなく正確な文字数を示します。 次の空白以外の 1 バイト文字を読み取るには %1s を使用し、次の空白以外のワイド文字を読み取るには %1ws を使用します。 char へのポインターは scanf 関数で使用され、 wchar_t へのポインターは wscanf 関数で使用されます。 必須。 サイズには、null ターミネータのスペースは含まれません。
C 反対のサイズ文字です。 scanf 関数で使用する場合はワイド文字を指定し、 wscanf 関数で使用する場合は 1 バイト文字を指定します。 空白文字は通常はスキップされますが、 C が指定されている場合は読み取られます。 他の型フィールドとは異なり、フィールド幅指定子は、最大ではなく正確な文字数を示します。 次の空白以外の 1 バイト文字を読み取るには %1s を使用し、次の空白以外のワイド文字を読み取るには %1ws を使用します。 wchar_t へのポインターは scanf 関数で使用され、 char へのポインターは wscanf 関数で使用されます。 必須。 Size 引数には、null ターミネータのスペースは含まれません。
d 10 進整数です。 intへのポインターです。 いいえ。
i 整数。 入力文字列が "0x" または "0X" で始まる場合は 16 進数、文字列が "0" で始まる場合は 8 進数、それ以外の場合は 10 進数です。 intへのポインターです。 いいえ。
o 8 進数です。 intへのポインターです。 いいえ。
p 16 進数のポインター アドレス。 読み取る最大桁数は、ポインターのサイズ (32 ビットまたは 64 ビット) によって異なります。これは、コンピューターのアーキテクチャによって異なります。 "0x" または "0X" はプレフィックスとして受け入れられます。 void*へのポインターです。 いいえ。
u 符号なし 10 進整数。 unsigned intへのポインターです。 いいえ。
x 16 進整数です。 intへのポインターです。 いいえ。
eEfFgG 次の順序で構成される浮動小数点の値です。省略可能な符号 (+ または -)、小数点のある一連の 10 進数、省略可能な指数 ("e" または "E") とそれに続く省略可能な符号付き整数値。 floatへのポインターです。 いいえ。
a, A 次の順序で構成される浮動小数点の値です。小数点 (省略可能) のある一連の 16 進数、指数 ("p" または "P") とそれに続く 10 進数の値。 floatへのポインターです。 いいえ。
n ストリームまたはバッファーからの入力は読み取られません。 intへのポインターであり、そこには scanf 関数または wscanf 関数への呼出しまでストリームまたはバッファーから読み取られた文字数が格納されます。 いいえ。
s 最初の空白文字 (スペース、タブ、または改行) までの文字列。 スペースで区切られていない文字列を読み取るには、「scanf での幅指定」で説明したように、角かっこのセット ([ ]) を使用します。 scanf 関数で使用する場合は 1 バイト文字配列を意味し、 wscanf 関数で使用する場合はワイド文字配列を意味します。 どちらの場合も、文字配列は入力フィールドと自動的に追加される終端の null 文字に十分な大きさにする必要があります。 必須。 サイズには null 終端文字のスペースが含まれます。
S 最初の空白文字 (スペース、タブ、または改行) までの反対のサイズ文字列。 スペースで区切られていない文字列を読み取るには、「scanf での幅指定」で説明したように、角かっこのセット ([ ]) を使用します。 scanf 関数で使用する場合はワイド文字配列を意味し、wscanf 関数で使用する場合は 1 バイト文字配列を意味します。 どちらの場合も、文字配列は入力フィールドと自動的に追加される終端の null 文字に十分な大きさにする必要があります。 必須。 サイズには null 終端文字のスペースが含まれます。

必要に応じて、size 引数をパラメーター リストで、適用される引数の直後に渡す必要があります。 コード例を次に示します。

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

10 文字までの文字列を string1で読み取り、8 文字までの文字列を string2で読み取ります。 バッファー サイズは、null 終端文字用にスペースが予約されるため、幅指定より 1 つ以上大きくする必要があります。

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

文字を次のように読み取る場合 使用する関数 書式指定子は次のとおりです。
1 バイト scanf 関数 chc、または hC
1 バイト wscanf 関数 Chc、または hC
ワイド wscanf 関数 clc、または lC
ワイド scanf 関数 Clc、または lC

scanf 関数と wscanf 関数で文字列をスキャンするには、型指定子 sS ではなく、 cCで上記の表を使用します。

関連項目

scanf_scanf_lwscanf_wscanf_l