int __far sscanf(const char __far *s, const char __far *format, ...); (C90)
int __far sscanf(const char __far * restrict s, const char __far * restrict format, ...); (C99) 【V1.08以降】
走査,変換,格納が正常に実行できた入力フィールドの個数を返します。返却値には,格納されなかった走査済みフィールドは含まれません。
ファイルの終わりで読み込もうとした場合,返却値はEOFです。
sで示された文字列からの入力を変換し,formatに続く実引数が指すオブジェクトに代入します。その際の変換方法は,formatが指す文字列で指定される書式に従います。領域の重なり合うオブジェクト間で複写が行われるとき,動作は保証されません。
書式に対して実引数が不足しているときの動作は保証されません。実引数が残っているにもかかわらず,書式が尽きてしまう場合,余分な実引数は評価するだけで無視されます。
書式は0個以上の指令からなり,書式内の各指令を順に実行します。入力文字が得られないか,不適切な入力により指令の実行が失敗すると,処理は終了します。
formatは,次に示す3種類のディレクティブにより構成されます。
各変換指示は“%”で始まります。“%”の後ろは,次のようになります。
最大フィールド長を規定する正の10進整数です。0の場合,規定がないものとします。
入力フィールドを変換する前に読み込まれる最大文字数を指定します。入力フィールドがこのフィールド長より小さい場合,本関数はフィールド内のすべての文字を読み込み,次のフィールドとその変換指示へ進みます。また,フィールド長分を読み込む前に,空白文字,または変換できない文字が見つかった場合,その文字までの文字群を読み込み,変換し,格納します。その後,本関数は次の変換指示へ進みます。
対応する引数のデータ型を解釈するデフォルトの方法を変更する,任意選択のサイズ文字hh,h,l,ll,j,z,tおよびLです。
指定がない場合,後ろに続くd,i,o,n,u,x,Xの型指定を強制的にint,またはunsigned intへのポインタに適用します。さらに,後ろに続くf,F,e,E,g,Gの型指定をfloatへのポインタに,nの型指定をintへのポインタに適用します。
hhを指定した場合,後ろに続くd,i,o,n,u,x,Xの型指定を強制的にsigned char,またはunsigned charへのポインタに適用します。hhはさらに,後ろに続くf,F,e,E,g,Gの型指定をfloatへのポインタに,nの型指定をsigned charへのポインタに適用します。(C99) 【V1.08以降】
hを指定した場合,後ろに続くd,i,o,n,u,x,Xの型指定を強制的にshort int,またはunsigned short intへのポインタに適用します。hはさらに,後ろに続くf,F,e,E,g,Gの型指定をfloatへのポインタに,nの型指定をshort intへのポインタに適用します。
lを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にlong,またはunsigned longへのポインタに適用します。lはさらに,後ろに続くf,F,e,E,g,Gの型指定をdoubleへのポインタに,nの型指定をlongへのポインタに適用します。
llを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にlong long,またはunsigned long longへのポインタに適用します。llはさらに,後ろに続くnの型指定を強制的にlong longへのポインタに適用します。
jを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にintmax_t,またはuintmax_tへのポインタに適用します。jはさらに,後ろに続くnの型指定をintmax_tへのポインタに適用します。(C99) 【V1.08以降】
zを指定した場合,後ろに続くd,i,o,u,x,Xの型指定を強制的にsize_t,またはsigned intへのポインタに適用します。zはさらに,後ろに続くnの型指定をsigned intへのポインタに適用します。(C99) 【V1.08以降】
tを指定した場合,後ろに続くd,i,o,u,x,Xの型指定をptrdiff_t,またはunsigned intへのポインタに適用します。tはさらに,後ろに続くnの型指定をptrdiff_tへのポインタに適用します。(C99) 【V1.08以降】
Lを指定した場合,後ろに続くf,F,e,E,g,Gの型指定を強制的にlong doubleへのポインタに適用します。ただし,本コンパイラではdouble型とlong double型は同じフォーマットです。
適用される変換の型を指定する文字です。変換の型を指定する文字とその意味を次に示します。
浮動小数点数(型指定文字e,f,g,E,F,G)の場合,次の一般形式に対応させてください。
[ + | - ] ddddd [ . ] ddd [ E | e [ + | - ] ddd ]
ただし,上記の一般形式のうち[ ]で囲まれた部分は任意選択であり,dddは10進数字を表します。
以上の理由からその時点の入力フィールドの走査を停止すると,次の文字が未読であるとみなされ,次の入力フィールドの最初の文字,またはその入力のあとの読み込み操作の最初の文字として使用されます。
変換する文字列に変換指示の一部ではない文字の並びが含まれている場合,この同じ文字の並びは入力の中に現れないようにしてください。本関数は一致する文字を走査しますが,格納はしません。不一致があった場合,一致していない最初の文字は読み取られていなかったかのように入力の中に残っています。 |