書式指定フィールド: scanf および wscanf 関数

ここでの情報は、セキュリティで保護されたバージョンを含む機能のファミリ全体 scanf に適用されます。 入力ストリームなどの入力ストリームをプログラム変数に挿入される値に解析する方法をstdin関数に指示scanfするために使用されるシンボルについて説明します。

引数は format 、入力の解釈を指定し、次の 1 つ以上を含めることができる文字列です。

  • 空白文字: 空白 ( )、タブ (\t)、または改行 (\n)。 空白文字が現れると、scanf は、次の非空白文字が現れるまで、入力データ内の連続するすべての空白文字を読み取ります。ただし、読み取るだけで格納しません。 書式に指定された 1 つの空白文字は、入力データ内の任意の個数 (0 を含む) の空白文字および任意の組み合わせの空白文字と一致します。

  • パーセント記号 (%) 以外の非空白文字。 非空白文字が現れると、scanf 関数は、一致する非空白文字を読み取ります。ただし、読み取るだけで格納しません。 入力ストリーム内の次の文字が一致しない場合は終了 scanf します。

  • パーセント記号 (%) に続く書式指定。 書式指定では、入力内の scanf 文字を読み取り、指定した型の値に変換します。 変換後の値は、引数リスト内の引数に代入されます。

    書式指定は、次の形式で行います。

    %[*][width][{h|l|ll|I64|L}]type

    ここで、, width, h, l, ll, I64, およびL幅の指定scanf表しtype型フィールド文字scanf表します。

format引数文字列は左から右に読み取られます。 書式指定外の文字は、入力ストリーム内の文字シーケンスと一致することが想定されます。 入力ストリーム内の一致する文字はスキャンされますが、保存されません。 入力ストリーム内の文字が書式指定と競合し、 scanf 終了し、文字が読み取られていなかったかのように入力ストリームに残っている場合。

最初の書式指定が検出されると、この仕様に従って最初の入力フィールドの値が変換されます。 この値は、引数の後の最初の引数で指定された場所に format 格納されます。 2 番目の書式指定では、書式指定文字列の末尾を通じて、2 番目の入力フィールドが変換され、次の引数に格納されます。

入力フィールドは、最初の空白文字 (スペース、タブ、または改行) まで、または書式指定に従って変換できない最初の文字まで、またはフィールド幅 (指定されている場合) に達するまでのすべての文字として定義されます。 書式指定に対して引数が多すぎる場合、余分な引数は評価されるだけで無視されます。 書式指定に十分な引数がない場合、結果は予測できません。

各書式指定フィールドには、特定の書式を表す 1 つの文字または数字を指定します。 type 文字は省略可能な最後の書式フィールドの次に指定し、入力フィールドを文字、文字列、または数値のうちいずれとして解釈するかを決定します。

最も簡単な書式指定は、パーセント記号と type 文字だけ (%s など) で行います。 パーセント記号 (%) の後に書式制御文字として意味のない文字が続く場合、その文字と次の文字 (次のパーセント記号まで) は通常の文字シーケンスとして扱われます。 つまり、入力と一致する必要がある文字のシーケンスとして扱われます。 パーセント記号を入力文字として処理するには、%% と指定します。

パーセント記号の後にアスタリスク (*) を指定すると、次の入力フィールドは指定されている型のフィールドとして解釈されますが、引数には代入されません。 フィールドはスキャンされますが、引数には格納されません。

セキュリティで保護されたバージョン (サフィックスを_s持つバージョン) scanf の関数には、型cの各パラメーター 、Cまたは sS[直後に渡されるバッファー サイズ パラメーターが必要です。 scanf 系の関数のセキュリティが強化されたバージョンの詳細については、「scanf_s_scanf_s_lwscanf_s_wscanf_s_l」を参照してください。

関連項目

scanf 幅の指定
scanf フィールド文字を入力する
scanf, _scanf_l, wscanf, _wscanf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l