非常教程

C参考手册

文件输入/输出 | File input/output

vfwscanf_s

Defined in header <wchar.h>

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读取时成一个单一的宽字符),除了在运行时检测到以下错误并调用当前安装的约束处理函数:

  • 指针类型的任何参数都是空指针
  • formatstream或者buffer是空指针
  • %c,%s或%[,加上终止空字符,将会超过为每个转换说明符提供的第二个(rsize_t)参数所写的字符数
  • 可选地,还有任何其他可检测到的错误,例如未知的转换说明符

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

参数

转换

说明

参数类型

说明符

长度修饰符

hh

h

(没有)

l

ll

j

z

t

L

(C99)。

(C99)。

(C99)。

(C99)。

(C99)。

%

匹配文字 %

N / A

N / A

N / A

N / A

N / A

N / A

N / A

N / A

N / A

c

匹配一个字符或一系列字符

N / A

N / A

char*

wchar_t*

N / A

N / A

N / A

N / A

N / A

如果使用宽度说明符,则完全匹配宽度宽的字符(参数必须是指向具有足够空间的数组的指针)。与%s和%[不同,不会将空字符追加到数组。

s

匹配一系列非空白字符(一个字符串)

如果使用宽度说明符,则匹配宽度或直到第一个空白字符(以先出现者为准)。除了匹配的字符外,总是存储一个空字符(所以参数数组必须至少有宽度+ 1个字符的空间)。

[组]

匹配一组字符中的非空字符序列。

如果该集合的第一个字符是^,则不匹配该集合中的所有字符。如果集合以该字符开头]或者^]该]字符也包含在集合中。它是实现定义的-,即扫描集中非初始位置的字符是否可以指示范围,如in [0-9]。如果使用宽度说明符,则只匹配宽度。除了匹配的字符外,总是存储一个空字符(所以参数数组必须至少有宽度+ 1个字符的空间)。

d

匹配一个十进制整数。

signed char* 要么 unsigned char*

signed short*要么 unsigned short*

signed int* 要么 unsigned int*

signed long* 要么 unsigned long*

signed long long*要么 unsigned long long*

intmax_t*要么 uintmax_t*

size_t*

ptrdiff_t*

N / A

数的格式是相同的通过按预期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

N / A

float*

double*

N / A

N / A

N / A

N / A

long double*

e,,E

数字的格式与预期的相同wcstof()。

fF

gG

p

匹配定义指针的实现定义的字符序列。

N / A

N / A

void**

N / A

N / A

N / A

N / A

N / A

N / A

printf函数族应该使用%p格式说明符产生相同的序列。

返回值

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

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

注意

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

参考

  • C11 standard (ISO/IEC 9899:2011):
    • 7.29.2.6 The vfwscanf function (p: 418)
    • 7.29.2.8 The vswscanf function (p: 419)
    • 7.29.2.10 The vwscanf function (p: 420)
    • K.3.9.1.7 The vfwscanf_s function (p: 632-633)
    • K.3.9.1.10 The vswscanf_s function (p: 635-636)
    • K.3.9.1.12 The vwscanf_s function (p: 637)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.24.2.6 The vfwscanf function (p: 364)
    • 7.24.2.8 The vswscanf function (p: 365)
    • 7.24.2.10 The vwscanf function (p: 366)
C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。