int scanf ( const char * format, ... );
說明符 | 描述 | 提取的字元 |
---|---|---|
i | 整數 | 任意數量的數字,可選地以符號 (+或-). ) 開頭。預設假定為十進位制數字 (0-9),但0字首表示八進位制數字 (0-7),而0x 或 0X 表示十六進位制數字 ( (0-f). )。有符號引數。 |
d 或 u | 十進位制整數 | 任意數量的十進位制數字 (0-9),可選地以符號 (+或-). d) 開頭。d 用於有符號引數,uu 用於無符號引數。 |
o | 八進位制整數 | 任意數量的八進位制數字 (0-7),可選地以符號 (+或-). ),可選地以符號開頭。無符號引數。 |
x | 十六進位制整數 | 任意數量的十六進位制數字 (0-9, a-f, A-F),可選地以0x或或 0X0x 或 0X 開頭,並且都可選地以符號開頭。無符號引數。+或-). ),可選地以符號開頭。無符號引數。 |
f, e, g | 浮點數 | 一系列十進位制數字,可選地包含一個小數點,可選地以符號 (+或-) 開頭,並可選地後跟e或e 或 E字元和一個十進位制整數(或 strtod 支援的其他一些序列)。 符合 C99 標準的實現也支援以 0x 或 0X 開頭的十六進位制浮點格式。 |
a | ||
c | 字元 | 下一個字元。如果指定了非11 的寬度,函式將精確讀取寬度個字元,並將它們儲存在作為引數傳遞的陣列的連續位置中。末尾不會附加空字元。 |
s | 字串 | 任意數量的非空白字元,在找到第一個空白字元時停止。一個終止空字元會自動新增到儲存序列的末尾。 |
p | 指標地址 | 表示指標的字元序列。使用的特定格式取決於系統和庫的實現,但它與在 fprintf 中格式化%p所用的格式相同。 |
[字元] | 掃描集 | 方括號之間指定的任意數量的字元。 一個不是第一個字元的破折號 (-) 在某些庫實現中可能會產生不可移植的行為。 |
[^字元] | 反向掃描集 | 任意數量的字元,其中沒有一個是在方括號內指定為字元的。 |
n | 計數 | 不消耗任何輸入。 到目前為止從 stdin 讀取的字元數被儲存在指向的位置。 |
% | % | 一個%後跟另一個%% 匹配一個單獨的%. |
子說明符 | 描述 |
---|---|
* | 一個可選的起始星號表示資料將從流中讀取但被忽略(即,它不儲存在由引數指向的位置)。 |
寬度 | 指定在當前讀取操作中要讀取的最大字元數(可選)。 |
長度 | 以下之一hh, h, l, ll, j, z, t, L(可選)。 這會改變相應引數所指向的儲存的預期型別(見下文)。 |
說明符 | |||||||
---|---|---|---|---|---|---|---|
長度 | d i | u o x | f e g a | c s [] [^] | p | n | |
(無) | int* | unsigned int* | float* | char* | void** | int* | |
hh | signed char* | unsigned char* | signed char* | ||||
h | short int* | unsigned short int* | short int* | ||||
l | long int* | unsigned long int* | double* | wchar_t* | long int* | ||
ll | long long int* | unsigned long long int* | long long int* | ||||
j | intmax_t* | uintmax_t* | intmax_t* | ||||
z | size_t* | size_t* | size_t* | ||||
t | ptrdiff_t* | ptrdiff_t* | ptrdiff_t* | ||||
L | long double* |
|
|
Enter your family name: Soulie Enter your age: 29 Mr. Soulie , 29 years old. Enter a hexadecimal number: ff You have entered 0xff (255). |