转换字符列表如下:
字
符
输入数据;变元类型
d
十进制整数; int *
i 整数; int * 。该整数可以是以 0 开头的八进制数, 也可以是以 0x/0X 开头的十六进制数
o 八进制数(可以带或不带前导 0);unsigned int *
u 无符号十进制整数; unsigned int *
x 十六进制整数(可以带或不带前导 0x/0X) ;unsigned int *
c
字符; char * 。按照字段宽的大小把读入的字符保存在指定的数组中,不加入字符 '\0'。
字段宽的缺省值为 1。在这种情况下,不跳过空白符;如果要读入下一个非空白符,使
用%1s(数字 1)
s
有非空白符组成的字符串(不包含引号) ;char * 。该变元指针指向一个字符数组,该
字符数组有足够空间来保存该字符串以及在末尾添加的 '\0'
e/f/g
浮点数; float * 。float 浮点数的输入格式为:一个任选的正负号,一串可能包含小数点
的数字和一个任选的指数字段。 指数字段由字母 e/E 以及后跟的一个可能带正负号的整
数组成
p 用 printf("%p") 调用输出的指针值; void *
n
将到目前为止此调用所读的字符数写入变元; int * 。不读入输入字符。 不增加转换项目
计数
[...]
用方括号括起来的字符集中的字符来匹配输入,以找到最长的非空字符串; char *。在
末尾添加 '\0'。格式 []...] 表示字符集中包含字符 ]
[^...]
用不在方括号里的字符集中的字符来匹配输入,以找到最长的非空字符串; char *。在
末尾添加 '\0'。格式 []...] 表示字符集中包含字符 ]
%
字面值 %,不进行赋值
字段类型字符:
如果变元是指向 short 类型而不是 int 类型的指针, 那么在 d/i/n/o/u/x 这几个转换字符前可以
加上字符 h;
如果变元是指向 long 类型的指针,那么在 d/i/n/o/u/x 这几个转换字符前可以加上字符 l;
如果变元是指向 double 类型而不是 float 类型的指针, 那么在 e/f/g 这几个转换字符前可以加
上字符 l;
如果变元是指向 long double 类型的指针,那么在 e/f/g 前可以加上字符 L。
1.3.2 scanf
#include <stdio.h>
int scanf(const char *format, … );
scanf(...)等价于 fscanf(stdin, ...) 。
1.3.3 sscanf
#include <stdio.h>
int sscanf(const char *buf, const char *format, … );
与 scanf()基本相同,但 sscanf()从 buf 指向的数组中读,而不是 stdin。