说明符 | 描述 | 特性 |
i | Integer | 任意数目的数字,前面可选有符号(+或-)。
默认的十进制数字(0-9), 如果0前缀则是八进制数字(0-7)和0x十六进制数字(0-f)。 有符号参数. |
d , u | 十进制整数 | 任何数字的十进制数(0-9),前面可选有一个符号(+或-)。 d是带符号的参数,u是无符号的参数。 |
o | 八进制整数 | 任何八进制数字(0-7),前面可选有符号(+或-)。 无符号的参数 |
x | 十六进制整数 | 任意一个十六进制数字(0-9,a-f, A-F),前面可选有0x或0X,前面可选有一个符号(+或-)。 无符号的参数 |
f,e,g | 浮点数 | 一组小数,可选地包含一个小数点,可选地前面有一个符号(+或-),
可选地后面有e或E字符和一个十进制整数(或strtod支持的其他一些序列)。
符合C99的实现也支持前加0x或0X的十六进制浮点格式。 |
a | ||
c | 字符 | 下一个字符。如果指定了非1的宽度,函数将准确读取width字符, 并将它们存储在作为参数传递的数组的后续位置。在末尾不添加空字符。 |
s | 字符串 | 任意数量的非空白字符,在找到的第一个空白字符处停止。在存储序列的末尾自动添加一个终止空字符。 |
p | 指针地址 | 表示指针的字符序列。使用的特定格式取决于系统和库实现,但它与在fprintf中格式化%p所用的格式相同。 |
[characters] | Scanset | 在括号中指定的任意数量的字符。
在某些库实现中,不是第一个字符的破折号(-)可能会产生不可移植的行为。 |
[^characters] | 取反的scanset | 括号中没有指定为字符的任意数量的字符。 |
n | 总数 | 没有输入。 到目前为止从流读取的字符数存储在指定位置。 |
% | %后面跟着另一个%匹配一个单独的%。 | % |
子说明符 | 说明 |
* | 一个可选的开始星号表示数据将从流中读取但被忽略(即它没有存储在参数所指向的位置)。 |
width | 指定当前读取操作中要读取的最大字符数(可选)。 |
length | hh, h, l, ll, j, z, t, L其中一个(可选)。 这将改变相应参数所指向的存储的预期类型(见下面)。 |
说明符 | |||||||
length | d i | u o x | f e g a | c s [] [^] | p | n | |
(none) | 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 |
/* scanf example */ #include <stdio.h> int main () { char str [80]; int i; printf ("Enter your family name: "); scanf ("%79s",str); printf ("Enter your age: "); scanf ("%d",&i); printf ("Mr. %s , %d years old.\n",str,i); printf ("Enter a hexadecimal number: "); scanf ("%x",&i); printf ("You have entered %#x (%d).\n",i,i); return 0; } |
Enter your family name: Soulie Enter your age: 29 Mr. Soulie , 29 years old. Enter a hexadecimal number: ff You have entered 0xff (255). |
fscanf | 从流读取格式化的数据(function ) |
printf | 将格式化的数据写入标准输出(function ) |
fopen | 打开文件(function ) |
gets | 从stdin获取字符串(function ) |