易百教程

输入格式控制字符串

转换字符及其含义,如下表所示:

转换符 含义
d 将输入读取为带符号的十进制整数。
i 将输入读取为有符号整数。 如果输入以0开头,则假定输入为八进制。 如果输入以0x0X开头,则假定为十六进制输入; 否则假定为十进制输入。
o 读取输入假设它是带符号的八进制整数。
u 将输入读取为无符号整数。
x 将输入读取为带符号的十六进制整数。
c 将字段宽度指定的字符数读取为char类型,包括空格。 如果不存在字段宽度规范,则将读取一个字符。 如果要在读取字符时忽略前面的空格,请在格式规范之前加一个空白字符。
s 将一串连续的非空白字符作为char类型读取,从下一个非空格字符开始。
[] 从方括号中读取指定集合中的字符。 第一个字符不是在集合中找到结束输入。
a, A, e, E, f, F, Gg 将输入转换为float类型。 输入中的符号,小数点和指数是可选的。
% 读取未存储的%字符。 因此,跳过%字符的规范是%%
p 将输入读取为指针。 参数应为void **类型。 输入格式已经在编译器内部实现定义,请参阅编译器和库文档。
n 没有读取输入,但是从键盘读取的字符数最多这一点存储在相应参数指向的内存中,应该是属于int *类型。 使用此规范进行读取不会增加赋值的值返回的计数。

注意

以下三个规范:

C  s []

需要两个参数:

  • 一个指向chartype类型的指针
  • 指向的字节数。

如果存在l长度修饰符,则将字符转换为wchar_t
%之外的任何非空格字符都将导致scanf_s()读取但不存储该字符的连续出现。要忽略逗号分隔输入中的值,请在每个格式说明符前面加逗号。%表示格式说明符的开头,它必须始终存在。