int fscanf ( FILE * stream, const char * format, ... );
| 说明符 | 描述 | 提取的字符 |
|---|---|---|
| i, u | 整数 | 任意数量的数字,可选地前面有符号(+或-). 十进制数字,默认为(0-9),但0前缀引入八进制数字(0-7),以及0x 十六进制数字 (0-f). |
| d | 十进制整数 | 任意数量的十进制数字(0-9),可选地前面有符号(+或-). |
| o | 八进制整数 | 任意数量的八进制数字(0-7),可选地前面有符号(+或-). |
| x | 十六进制整数 | 任意数量的十六进制数字(0-9, a-f, A-F),可选地前面有0x或或 0X,并可选地前面有符号(+或-). |
| f, e, g | 浮点数 | 一系列十进制数字,可选地包含小数点,可选地前面有符号(+或-)并可选地后面跟着e或E字符和十进制整数(或strtod支持的其他序列)。 符合C99标准的实现也支持十六进制浮点数格式,当其前面有 0x或0X时。 |
| a | ||
| c | 字符 | 下一个字符。如果指定了除1以外的宽度,则函数读取宽度个字符并将它们存储在作为参数传递的数组的连续位置中。末尾不会附加空字符。 |
| s | 字符串 | 任意数量的非空白字符,在遇到第一个空白字符时停止。一个终止的空字符会自动添加到存储序列的末尾。 |
| p | 指针地址 | 表示指针的字符序列。具体的格式取决于系统和库实现,但它与fprintf中格式化%p的格式相同。 |
| [字符] | 扫描集 | 括号内指定的任意数量的字符。 破折号(-),如果不是第一个字符,在某些库实现中可能会产生不可移植的行为。 |
| [^字符] | 否定扫描集 | 任意数量的字符,其中不包括括号内指定的任何字符。 |
| n | 计数 | 不消耗输入。 从stream读取的字符数存储在指向的位置。 |
| % | % | A%后跟另一个%匹配单个%. |
| 子说明符 | 描述 |
|---|---|
| * | 可选的起始星号表示数据将从流中读取但被忽略(即不存储在参数指向的位置)。 |
| 宽度 | 指定当前读取操作中要读取的最大字符数(可选)。 |
| 长度 | 之一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* | ||||||
|
|
I have read: 3.141600 and PI |