vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s
|
定义于头文件
<wchar.h>
|
||
|
int
vwscanf
(
const
wchar_t
*
restrict
format, va_list vlist
)
;
|
(1) | (C99 起) |
|
int
vfwscanf
(
FILE
*
restrict
stream,
const wchar_t * restrict format, va_list vlist ) ; |
(2) | (C99 起) |
|
int
vswscanf
(
const
wchar_t
*
restrict
buffer,
const wchar_t * restrict format, va_list vlist ) ; |
(3) | (C99 起) |
|
int
vwscanf_s
(
const
wchar_t
*
restrict
format, va_list vlist
)
;
|
(4) | (C11 起) |
|
int
vfwscanf_s
(
FILE
*
restrict
stream,
const wchar_t * restrict format, va_list vlist ) ; |
(5) | (C11 起) |
|
int
vswscanf_s
(
const
wchar_t
*
restrict
buffer,
const wchar_t * restrict format, va_list vlist ) ; |
(6) | (C11 起) |
从多种数据源读取数据,根据
format
进行解析,并将结果存储到
vlist
定义的存储位置。
stream
中读取数据。
buffer
中读取数据。对于
fwscanf
而言,到达字符串末尾等同于达到文件结束条件
-
- 任何指针类型的参数是空指针
-
format、stream或buffer是空指针 - 通过 %c、%s 或 %[ 写入的字符数加上终止空字符,将超过为这些转换说明符提供的第二个 (rsize_t) 参数
- 可选地,任何其他可检测错误,例如未知转换说明符
-
与所有边界检查函数一样,只有在实现定义了
__STDC_LIB_EXT1__
且用户在包含
<stdio.h>
之前将
__STDC_WANT_LIB_EXT1__
定义为整型常量
1
时,才保证
vwscanf_s、vfwscanf_s和vswscanf_s可用。
目录 |
参数
| stream | - | 用于读取的输入文件流 |
| buffer | - | 指向以空字符结尾的宽字符串的指针,用于读取数据 |
| format | - | 指向以空字符结尾的宽字符串的指针,指定如何读取输入 |
| vlist | - | 包含接收参数的变长参数列表 |
format
字符串由
- 非空白宽字符(除 % 外):格式字符串中的每个此类字符会精确消耗输入流中的一个相同字符,如果流中的下一个字符不相等则导致函数失败。
- 空白字符:格式字符串中的任意单个空白字符会消耗输入中所有可用的连续空白字符(通过循环调用 iswspace 确定)。注意格式字符串中的 " \n " 、 " " 、 " \t \t " 或其他空白字符之间没有区别。
- 转换说明符。每个转换说明符具有以下格式:
-
- 开头的 % 字符。
-
- (可选) 赋值抑制字符 * 。如果存在此选项,函数不会将转换结果赋值给任何接收参数。
-
- (可选) 整数(大于零),用于指定 最大字段宽度 ,即函数在执行当前转换说明符指定的转换时允许消耗的最大字符数。注意:若未提供宽度, % s 和 % [ 可能导致缓冲区溢出。
-
- (optional) 长度修饰符 ,用于指定接收参数的大小,即实际的目标类型。这会影响转换精度和溢出规则。默认目标类型因各转换类型而异(参见下表)。
-
- 转换格式说明符。
以下格式说明符可用:
|
转换
说明符 |
说明 |
期望的
参数类型 |
||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 长度修饰符→ |
hh
|
h
|
无 |
l
|
ll
|
j
|
z
|
t
|
L
|
|
| 仅自 C99 起可用→ | 是 | 是 | 是 | 是 | 是 | |||||
%
|
匹配字面量
%
。
|
不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
c
|
匹配一个 字符 或一系列 字符 。
|
不适用 | 不适用 |
char
*
|
wchar_t
*
|
不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
s
|
匹配一系列非空白字符(一个 字符串 )。
|
|||||||||
[
set
]
|
匹配来自字符集 set 的非空字符序列。
|
|||||||||
d
|
匹配一个 十进制整数 。
|
signed
char
*
或
unsigned
char
*
|
signed
short
*
或
unsigned
short
*
|
signed
int
*
或
unsigned
int
*
|
signed
long
*
或
unsigned
long
*
|
signed
long
long
*
或
unsigned
long
long
*
|
size_t
*
|
不适用 | ||
i
|
匹配一个 整数 。
|
|||||||||
u
|
匹配一个无符号 十进制整数 。
|
|||||||||
o
|
匹配一个无符号 八进制整数 。
|
|||||||||
x
X
|
匹配一个无符号 十六进制整数 。
|
|||||||||
n
|
返回 迄今为止读取的字符数 。
|
|||||||||
a
(C99)
A
(C99)
e
E
f
F
(C99)
g
G
|
匹配一个 浮点数 。
|
不适用 | 不适用 |
float
*
|
double
*
|
不适用 | <td class="table-na" style="background: #ececec; color: grey; vertical-align:||||
返回值
注释
所有这些函数都可能调用
va_arg
,返回后
arg
的值将变为未定义状态。这些函数不会调用
va_end
,必须由调用者自行调用。
示例
|
本节内容不完整
原因:缺少示例 |
参考文献
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.29.2.6 vfwscanf 函数 (页: 418)
-
- 7.29.2.8 vswscanf 函数 (页: 419)
-
- 7.29.2.10 vwscanf 函数 (页: 420)
-
- K.3.9.1.7 vfwscanf_s 函数 (页: 632-633)
-
- K.3.9.1.10 vswscanf_s 函数 (页: 635-636)
-
- K.3.9.1.12 vwscanf_s 函数 (页: 637)
- C99 标准 (ISO/IEC 9899:1999):
-
- 7.24.2.6 vfwscanf 函数 (页: 364)
-
- 7.24.2.8 vswscanf 函数 (页: 365)
-
- 7.24.2.10 vwscanf 函数 (页: 366)
参见
|
(C95)
(C95)
(C95)
(C11)
(C11)
(C11)
|
从
stdin
、文件流或缓冲区读取格式化宽字符输入
(函数) |
|
C++ 文档
关于
vwscanf
,
vfwscanf
,
vswscanf
|
|