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). |