vprintf功能

每个 vprintf 函数采用指向参数列表,然后布局和编写特定数据绑定到特定的目标。函数在执行的参数验证不同,函数是否宽采用或单字节字符字符串、输出目标和支持指定的参数用于格式字符串的顺序。

_vcprintf, _vcwprintf

vfprintf, vfwprintf

_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l

vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l

vprintf, vwprintf

_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l

vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l

vsprintf, vswprintf

_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l

_vsnprintf, _vsnwprintf

备注

vprintf 功能类似于其对等功能如下表中。但是,每个 vprintf 函数接受的指针参数列表,,而函数接受的每个重复参数列表。

这些功能如下设置数据格式为输出到目标。

功能

重复功能

输出目标

参数验证

位置参数支持

_vcprintf

_cprintf

控制台

检查 null。

no

_vcwprintf

_cwprintf

控制台

检查 null。

no

vfprintf

fprintf

检查 null。

no

vfprintf_p

fprintf_p

应检查和格式有效。

yes

vfprintf_s

fprintf_s

应检查和格式有效。

no

vfwprintf

fwprintf

检查 null。

no

vfwprintf_p

fwprintf_p

应检查和格式有效。

yes

vfwprintf_s

fwprintf_s

应检查和格式有效。

no

vprintf

printf

Stdout

检查 null。

no

vprintf_p

printf_p

Stdout

应检查和格式有效。

yes

vprintf_s

printf_s

Stdout

应检查和格式有效。

no

vwprintf

wprintf

Stdout

检查 null。

no

vwprintf_p

wprintf_p

Stdout

应检查和格式有效。

yes

vwprintf_s

wprintf_s

Stdout

应检查和格式有效。

no

vsprintf

sprintf

内存指向通过 缓冲

检查 null。

no

vsprintf_p

sprintf_p

内存指向通过 缓冲

应检查和格式有效。

yes

vsprintf_s

sprintf_s

内存指向通过 缓冲

应检查和格式有效。

no

vswprintf

swprintf

内存指向通过 缓冲

检查 null。

no

vswprintf_p

swprintf_p

内存指向通过 缓冲

应检查和格式有效。

yes

vswprintf_s

swprintf_s

内存指向通过 缓冲

应检查和格式有效。

no

_vscprintf

_vscprintf

内存指向通过 缓冲

检查 null。

no

_vscwprintf

_vscwprintf

内存指向通过 缓冲

检查 null。

no

_vsnprintf

_snprintf

内存指向通过 缓冲

检查 null。

no

_vsnwprintf

_snwprintf

内存指向通过 缓冲

检查 null。

no

argptr 参数具有类型 va_list,在 VARARGS.H 和 STDARG.H. 定义。必须由 va_start, 初始化 argptr 变量,并且可以通过后续 va_arg 重新初始化调用; argptr 然后指向参数的列表的开头为输出转换和传输根据 格式 参数对应的规范。窗体 具有窗体和功能和 printfformat 参数相同。这些函数没有调用 va_end。有关每个 vprintf 功能的完整说明,请参见其对应的声明如上表列出了函数。

_vsnprintfvsprintf计数 字节的不同之处在于编写没有更多的 缓冲区

w 中缀,这些功能的版本与 w 中缀的该名称是相应的功能的宽字符版本;在这些宽字符函数中的每个元素, 缓冲区布局 是宽字符字符串。否则,每个宽字符功能的工作方式与其 SBCS 重复功能。

这些功能的版本与 _s_p 后缀的更为安全的版本。这些版本验证格式字符串,并生成异常,如果格式字符串不是格式良好的 (例如,因此,如果使用无效格式字符)。

这些功能的版本与 _p 后缀的能够指定所提供的参数在格式字符串被替换的顺序。有关更多信息,请参见 printf_p位置参数

对于 vsprintfvswprintf_vsnprintf_vsnwprintf,因此,如果复制出现在重叠的字符串之间,该行为不确定。

安全说明安全说明

确保 格式 不是用户定义的字符串。有关更多信息,请参见 避免缓冲区溢出。如果使用这些函数的安全版本 ( _s_p 后缀),一个用户提供的格式字符串可以触发无效参数异常,如果该用户提供的字符串包含无效格式字符。

请参见

参考

流I/O

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg, va_end, va_start