vfwscanf_s

vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s

Defined in header
int vwscanf( const wchar_t *restrict format, va_list vlist (1)(since C99)
int vfwscanf( FILE *restrict stream, const wchar_t *restrict format, va_list vlist (2)(since C99)
int vswscanf( const wchar_t *restrict buffer, const wchar_t *restrict format, va_list vlist (3)(since C99)
int vwscanf_s( const wchar_t *restrict format, va_list vlist (4)(since C11)
int vfwscanf_s( FILE *restrict stream, const wchar_t *restrict format, va_list vlist (5)(since C11)
int vswscanf_s( const wchar_t *restrict buffer, const wchar_t *restrict format, va_list vlist (6)(since C11)

从各种来源读取数据,根据其解释并将format结果存储到由其定义的位置vlist

1)从中读取数据stdin

2)从文件流中读取数据stream

3)从空终止的宽字符串中读取数据buffer。到达字符串的末尾等同于达到文件结束条件fwscanf

4-6)同(1-3),所不同的是%c%s%[转换说明每个期望两个参数(通常的指针和类型的值rsize_t指示所述接收阵列的大小,其可以是1附有%LC读取时成一个单一的宽字符),除了在运行时检测到以下错误并调用当前安装的约束处理函数:

  • 指针类型的任何参数都是空指针

由于所有的边界检查功能,vwscanf_s,vfwscanf_s,和vswscanf_s仅保证可供如果__STDC_LIB_EXT1__由实现所定义,并且如果用户定义__STDC_WANT_LIB_EXT1__的整数常数1,包括之前<wchar.h>。

参数

转换说明参数类型
说明符
长度修饰符hh
(C99)。
%匹配文字 %N / A
c匹配一个字符或一系列字符N / A
如果使用宽度说明符,则完全匹配宽度宽的字符(参数必须是指向具有足够空间的数组的指针)。与%s和%[不同,不会将空字符追加到数组。
s匹配一系列非空白字符(一个字符串)
如果使用宽度说明符,则匹配宽度或直到第一个空白字符(以先出现者为准)。除了匹配的字符外,总是存储一个空字符(所以参数数组必须至少有宽度+ 1个字符的空间)。
[组]匹配一组字符中的非空字符序列。
如果该集合的第一个字符是^,则不匹配该集合中的所有字符。如果集合以该字符开头]或者^]该]字符也包含在集合中。它是实现定义的-,即扫描集中非初始位置的字符是否可以指示范围,如in [0-9]。如果使用宽度说明符,则只匹配宽度。除了匹配的字符外,总是存储一个空字符(所以参数数组必须至少有宽度+ 1个字符的空间)。
d匹配一个十进制整数。signed char* 要么 unsigned char*
数的格式是相同的通过按预期wcstol()与值10的base参数。
i匹配一个整数。
数的格式是相同的通过按预期wcstol()与值​0​的base参数(基部由解析的第一字符确定)。
u匹配一个无符号的十进制整数。
数的格式是相同的通过按预期wcstoul()与值10的base参数。
o匹配一个无符号的八进制整数。
数的格式是相同的通过按预期wcstoul()与值8的base参数。
x, X匹配一个无符号的十六进制整数。
数的格式是相同的通过按预期wcstoul()与值16的base参数。
n返回到目前为止读取的字符数。
没有输入被消耗。不增加分配计数。如果说明符具有定义的分配抑制运算符,则行为未定义。
a,A(C99) ,匹配一个浮点数。N / A
e,,E数字的格式与预期的相同wcstof()。
fF
gG
p匹配定义指针的实现定义的字符序列。N / A
printf函数族应该使用%p格式说明符产生相同的序列。

返回值

1-3)成功分配的接收参数数目,或者EOF在分配第一个接收参数前发生读取失败。

4-6)与(1-3)相同,但是EOF如果存在运行时约束冲突,也会返回。

注意

所有这些函数都可以调用va_argarg返回后的值是不确定的。这些函数不会调用va_end,并且它必须由调用者完成。

参考

  • C11 standard (ISO/IEC 9899:2011):