指定子 | 対応する型 | 説明 |
---|---|---|
%c | char |
1文字を入力する sscanf( "ABC", "%c", a ); // a[0]='A' sscanf( "ABC", "%2c", &a ); // a[0]='A', a[1]='B' |
%s | char * |
文字列を入力する sscanf( "ABC", "%s", a ); // a[]="ABC" sscanf( "ABC", "%2s", a ); // a[]="AB" |
%d | int |
整数を10進数として入力する sscanf( "123", "%d", &i ); // i=123 sscanf( "123", "%2d", &i ); // i=12 sscanf( "1,2", "%d,%d", &i, &j ); // i=1, j=2 |
%u | unsigned int | 符号なし整数を10進数として入力する |
%o | int, short, unsigned int | 整数を8進数として入力する |
%x | int, unsigned int | 整数を16進数として入力する |
%f | float |
実数を入力する sscanf( "314e-2", "%f", &f ); // f=3.14 |
%hd | short | 単精度整数を10進数として入力する |
%ld | long |
倍精度整数を10進数として入力する sscanf( "123", "%ld", &li ); // li=123 |
%hu | unsigned short | 符号なし単精度整数を10進数として入力する |
%lu | unsigned long | 符号なし倍精度整数を10進数として入力する |
%lo | long, unsigned long | 倍精度整数を8進数として入力する |
%lx | long, unsigned long | 倍精度整数を16進数として入力する |
%lf | double |
倍精度実数を入力する sscanf( "314e-2", "%lf", &d ); // d=3.14 |
[指定文字] | - |
指定した文字を変数に格納する。 sscanf( "AAABBC", "[AB]", a ); // a="AAABB" (簡易正規表現) |
指定 | 説明 |
---|---|
h | type で整数を指定する場合に、引数が int ではなく short へのポインタであることを示す。Light C では int と short が同一なので、効果はない。 |
l | type が整数の場合は引数が int ではなく long へのポインタであることを示し、type が小数の場合は引数が float ではなく double へのポインタであることを示す。 |
L | type で小数を指定する場合に、引数が long double 型であることを示す。Light C では long double と double が同一なので、効果はない。 |
F | 引数が far ポインタであることを示す。ただし、type が p の場合は、引数でポイントされるポインタが far であることを示す。 |
N | 引数が near ポインタであることを示す。ただし、type が p の場合は、引数でポイントされるポインタが near であることを示す。 |
指定 | 型 |
---|---|
d,i,u,x | int* または unsigned* |
ld,LI,lu,,lx | long* または unsigned long* |
f,e,g | float* |
lf,le,lg | double* |
c,s | char* |
C,S | wchar_t* |
n | int* |
p | void** |
Fp | void far** |
Np | void near** |
Fd | int far* |
Nd | int near* |
指定 | 解析される文字列の構文 | 説明 |
---|---|---|
d, i | [+|-]ddd | 文字列を符号付き 10 進数として解析し、結果を (long) int に格納します。 |
u | [+]ddd | 文字列を符号なし 10 進数として解析し、結果を (unsigned long) int に格納します。 |
X, x | [+][0x|0X]hhh | 文字列を 16 進数として解析し、結果を (unsigned long) int に格納します。文字列の先頭に 0x または 0X が付いていてもかまいません。 |
o | [+]ddd | 文字列を 8 進数として解析し、結果を (unsigned long) int に格納します。 |
q | [+]ddd | 文字列を 4 進数として解析し、結果を (unsigned long) int に格納します。[LC] |
b | [+]ddd | 文字列を 2 進数として解析し、結果を (unsigned long) int に格納します。[LC] |
p | hhh または hhh:hhh | ポインタ値の表現を読み込みます。small/medium モデルの場合と、modifier に N を指定した場合は、4 桁以下の 16 進数を入力し、near ポインタとして格納します。そうでない場合は、4 桁以下の 16 進数、コロン (:)、および 4 桁以下の 16 進数を順に入力し、far ポインタとして格納します。 |
s | [^ \t\n\v\f\r]... | ホワイトスペース以外のバイトを連続して入力し、末尾に 0 を付加して、結果を char [ ] に格納します。 |
c | (任意の n バイト) | 1 バイトを入力し、結果を char に格納します。width を指定した場合は、そのバイト数分のデータを連続して入力し、結果を char [ ] に格納します。 |
S | [^ \t\n\v\f\r]... | s と似ていますが、結果を wchar_t [ ] に格納する点が異なります。 |
C | c と似ていますが、結果を wchar_t または wchar_t [ ] に格納する点が異なります。 | |
f,e,g,E,G | [+|-][ddd][.ddd][{E|e}ddd] | 文字列を小数として解析し、結果を float または double に格納します。 |
n | これまでに入力したバイト数を int に格納します。 c と C 以外では、入力データ先頭のホワイトスペースは読み飛ばされる。 |