scanf类型字段字符
以下信息适用于任何功能 scanf 系列,包括安全版本,例如 scanf_s。
type 字符是唯一所需的格式字段;在所有选项格式字段后出现。 type 字符确定关联的参数是否被解释为字符、字符串和数字。
键入 scanf 功能的字符
字符 |
应输入的类型 |
参数的类型 |
大小在安全版本的参数? |
---|---|---|---|
c |
字符。 当使用 scanf 函数,指定单字节字符;当使用 wscanf 函数,指定宽字符。 通常跳过的空白字符读取,当 c 中指定。 若要读取下非空白单字节字符,请使用 %1s;若要读取下一个非空白宽字符,请使用 %1ws。 |
为 char 的指针,当使用 scanf 函数,指向 wchar_t ,当使用 wscanf 函数。 |
必选。 范围不包含 null 结束符的空格。 |
C |
相反的范围字符。 当使用 scanf 函数,指定宽字符;当使用 wscanf 函数,指定单字节字符。 通常跳过的空白字符读取,当 C 中指定。 若要读取下非空白单字节字符,请使用 %1s;若要读取下一个非空白宽字符,请使用 %1ws。 |
为 wchar_t 的指针,当使用 scanf 函数,指向 char ,当使用 wscanf 函数。 |
必选。 范围参数不包含 null 结束符的空格。 |
d |
十进制整数。 |
为 int的指针。 |
不能。 |
i |
一个 Integer。 十六进制,如果输入字符串以 “0x”或 “0X”开头,八进制,如果该字符串从 “0 " 开头,否则)。 |
为 int的指针。 |
不能。 |
o |
八进制整数。 |
为 int的指针。 |
不能。 |
u |
无符号十进制整数。 |
为 unsignedint的指针。 |
不能。 |
x |
十六进制整数。 |
为 int的指针。 |
不能。 |
e, E, f, g, G |
包含可选符号 (+ 或 -),系列浮点值的一个或多个十进制数字包含小数点和可选) 有符号整数值 (“e”或 “E”) 及后跟的选项指数。 |
为 float的指针。 |
不能。 |
n |
从流或缓冲区读取的未为。 |
为 int的指针,来自流或缓冲区成功读取的字符的存储数字 (该在当前点对 scanf 函数或 wscanf 功能。 |
不能。 |
s |
字符串,到第一个空白字符 (空格、制表符、换行符)。 若要读取没有空格分隔的字符串,请使用一组方括号 ([ ]),如 scanf宽度规范所述。 |
当使用 scanf 函数,表示单字节字符数组;当使用 wscanf 函数,表示宽字符数组。 在任何情况下,字符数组必须足够大以供输入字段以及终止 null 字符,自动追加。 |
必选。 范围包含 null 结束符的空格。 |
S |
相反大小字符串中,到第一个空白字符 (空格、制表符、换行符)。 若要读取没有空格分隔的字符串,请使用一组方括号 ([ ]),如 scanf宽度规范所述。 |
当使用 scanf函数,表示宽字符数组;当使用 wscanf函数,表示单字节字符数组。 在任何情况下,字符数组必须足够大以供输入字段以及终止 null 字符,自动追加。 |
必选。 范围包含 null 结束符的空格。 |
a 和 A 说明符 (请参见 printf键入域字符) 到 scanf不可用。
它们应用于应,如果需要,通过的范围参数在参数后面的参数列表。 例如,下列代码:
char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);
读取的一个最大长度的字符串的 10 到 string1与了最大长度的字符串的 8 到 string2。 ,因为空间必须是保留为 null 结束符,缓冲区大小超过宽度规范应至少一个。
格式字符串可以处理单字节或宽字符输入无论是否使用函数的单字节字符或宽字符版本。 因此,下面所示的单字节或宽字符与 scanf 功能和 wscanf 功能,使用格式说明符。
读取字符 |
使用此功能 |
这些格式说明符 |
---|---|---|
单字节 |
scanf 函数 |
c、hc 或 hC |
单字节 |
wscanf 函数 |
C、hc 或 hC |
宽 |
wscanf 函数 |
c、lc 或 lC |
宽 |
scanf 函数 |
C、lc 或 lC |
若要浏览与 scanf 功能的字符串和 wscanf 功能,请使用格式类型说明符 s 和 S 的上述表而不是 c 和 C。