
538
18
章 標準ライブラリ関数
が収まるだけ十分大きな配列の先頭要素を指す。
変換指定子
[...]
は
s
と同様だが、次が異なる。非空白文字の列と合致するのではなく、
スキャン集合と呼ばれる角括弧で括られた文字集合の文字の列と合致する(スキャン集合は
空白文字を含んでも含まなくてもよい)。開き角括弧の次の最初の文字がキャレット(
^
)な
ら、その後の文字の意味を反転させる。すなわち、変換指定はキャレットの後の文字でな
い文字の列と合致する。
[...]
指定子の開き括弧(または開き括弧とキャレット)の次の文字が右角括弧(])なら、
その右角括弧は閉じ記号としてではなく、スキャン集合を定義する文字のメンバとして解
釈される。角括弧(または先頭のキャレットと閉じ角括弧)に挟まれた文字が、ハイフン(
-
)
を先頭または最後の位置ではなく含むなら、
scanf()
が、例えば文字範囲を示すなど、特別
な解釈をするかどうかは実装に任される。例えば、変換指定
%[0-9]
が数字列に合致するか、
文字
0
,
-
,
9
の列に合致するかは実装がハイフンをどう定義するかに依存する。
scanf()
関数は、次のイベントのいずれかが起こると入力ストリームからの読み込みを中
止する。
●
書式指定文字列全体の処理が完了した。
●
マッチング失敗:入力フィールドの最初の非空白文字が変換指定子に合致しないか、
入力文字が書式指定文字列の対応する位置と合致しない。
●
入力失敗:入力が入力ストリームから読み取れない、または符号化エラーが発生した。
変換指定の一部でない書式指定 ...