转换字符及其含义,如下表所示:
转换符 | 含义 |
---|---|
d |
将输入读取为带符号的十进制整数。 |
i |
将输入读取为有符号整数。 如果输入以0 开头,则假定输入为八进制。 如果输入以0x 或0X 开头,则假定为十六进制输入; 否则假定为十进制输入。 |
o |
读取输入假设它是带符号的八进制整数。 |
u |
将输入读取为无符号整数。 |
x |
将输入读取为带符号的十六进制整数。 |
c |
将字段宽度指定的字符数读取为char 类型,包括空格。 如果不存在字段宽度规范,则将读取一个字符。 如果要在读取字符时忽略前面的空格,请在格式规范之前加一个空白字符。 |
s |
将一串连续的非空白字符作为char 类型读取,从下一个非空格字符开始。 |
[] |
从方括号中读取指定集合中的字符。 第一个字符不是在集合中找到结束输入。 |
a , A , e , E , f , F , G 或 g |
将输入转换为float 类型。 输入中的符号,小数点和指数是可选的。 |
% |
读取未存储的% 字符。 因此,跳过% 字符的规范是%% 。 |
p |
将输入读取为指针。 参数应为void ** 类型。 输入格式已经在编译器内部实现定义,请参阅编译器和库文档。 |
n |
没有读取输入,但是从键盘读取的字符数最多这一点存储在相应参数指向的内存中,应该是属于int * 类型。 使用此规范进行读取不会增加赋值的值返回的计数。 |
注意
以下三个规范:
C s []
需要两个参数:
- 一个指向
char
和type
类型的指针 - 指向的字节数。
如果存在l
长度修饰符,则将字符转换为wchar_t
。
除%
之外的任何非空格字符都将导致scanf_s()
读取但不存储该字符的连续出现。要忽略逗号分隔输入中的值,请在每个格式说明符前面加逗号。%
表示格式说明符的开头,它必须始终存在。