vprintf功能
每个 vprintf 函数采用指向参数列表,然后布局和编写特定数据绑定到特定的目标。 函数在执行的参数验证不同,函数是否宽采用或单字节字符字符串、输出目标和支持指定的参数用于格式字符串的顺序。
备注
vprintf 功能类似于其对等功能如下表中。 但是,每个 vprintf 函数接受的指针参数列表,,而函数接受的每个重复参数列表。
这些功能如下设置数据格式为输出到目标。
功能 |
重复功能 |
输出目标 |
参数验证 |
位置参数支持 |
---|---|---|---|---|
_vcprintf |
控制台 |
检查 null。 |
no |
|
_vcwprintf |
控制台 |
检查 null。 |
no |
|
vfprintf |
流 |
检查 null。 |
no |
|
vfprintf_p |
流 |
应检查和格式有效。 |
yes |
|
vfprintf_s |
流 |
应检查和格式有效。 |
no |
|
vfwprintf |
流 |
检查 null。 |
no |
|
vfwprintf_p |
流 |
应检查和格式有效。 |
yes |
|
vfwprintf_s |
流 |
应检查和格式有效。 |
no |
|
vprintf |
Stdout |
检查 null。 |
no |
|
vprintf_p |
Stdout |
应检查和格式有效。 |
yes |
|
vprintf_s |
Stdout |
应检查和格式有效。 |
no |
|
vwprintf |
Stdout |
检查 null。 |
no |
|
vwprintf_p |
Stdout |
应检查和格式有效。 |
yes |
|
vwprintf_s |
Stdout |
应检查和格式有效。 |
no |
|
vsprintf |
内存指向通过 缓冲 |
检查 null。 |
no |
|
vsprintf_p |
内存指向通过 缓冲 |
应检查和格式有效。 |
yes |
|
vsprintf_s |
内存指向通过 缓冲 |
应检查和格式有效。 |
no |
|
vswprintf |
内存指向通过 缓冲 |
检查 null。 |
no |
|
vswprintf_p |
内存指向通过 缓冲 |
应检查和格式有效。 |
yes |
|
vswprintf_s |
内存指向通过 缓冲 |
应检查和格式有效。 |
no |
|
_vscprintf |
内存指向通过 缓冲 |
检查 null。 |
no |
|
_vscwprintf |
内存指向通过 缓冲 |
检查 null。 |
no |
|
_vsnprintf |
内存指向通过 缓冲 |
检查 null。 |
no |
|
_vsnwprintf |
内存指向通过 缓冲 |
检查 null。 |
no |
argptr 参数具有类型 va_list,在 VARARGS.H 和 STDARG.H. 定义。 必须由 va_start, 初始化 argptr 变量,并且可以通过后续 va_arg 重新初始化调用; argptr 然后指向参数的列表的开头为输出转换和传输根据 格式 参数对应的规范。 窗体 具有窗体和功能和 printf的 format 参数相同。 这些函数没有调用 va_end。 有关每个 vprintf 功能的完整说明,请参见其对应的声明如上表列出了函数。
_vsnprintf 与 vsprintf 比 计数 字节的不同之处在于编写没有更多的 缓冲区。
不 w 中缀,这些功能的版本与 w 中缀的该名称是相应的功能的宽字符版本;在这些宽字符函数中的每个元素, 缓冲区 和 布局 是宽字符字符串。 否则,每个宽字符功能的工作方式与其 SBCS 重复功能。
这些功能的版本与 _s 和 _p 后缀的更为安全的版本。 这些版本验证格式字符串,并生成异常,如果格式字符串不是格式良好的 (例如,因此,如果使用无效格式字符)。
这些功能的版本与 _p 后缀的能够指定所提供的参数在格式字符串被替换的顺序。 有关更多信息,请参见 printf_p位置参数。
对于 vsprintf、 vswprintf、 _vsnprintf 和 _vsnwprintf,因此,如果复制出现在重叠的字符串之间,该行为不确定。
安全说明 |
---|
确保 格式 不是用户定义的字符串。有关更多信息,请参见 避免缓冲区溢出。如果使用这些函数的安全版本 ( _s 或 _p 后缀),一个用户提供的格式字符串可以触发无效参数异常,如果该用户提供的字符串包含无效格式字符。 |
请参见
参考
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l