vprintf Functions

Each of the vprintf functions takes a pointer to an argument list, then formats and writes the given data to a particular destination. The functions differ in the parameter validation performed, whether the functions take wide or single-byte character strings, the output destination, and the support for specifying the order in which parameters are used in the format string.

_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

Remarks

The vprintf functions are similar to their counterpart functions as listed in the following table. However, each vprintf function accepts a pointer to an argument list, whereas each of the counterpart functions accepts an argument list.

These functions format data for output to destinations as follows.

Function

Counterpart function

Output destination

Parameter Validation

Positional Parameter Support

_vcprintf

_cprintf

console

Check for null.

no

_vcwprintf

_cwprintf

console

Check for null.

no

vfprintf

fprintf

Stream

Check for null.

no

vfprintf_p

fprintf_p

Stream

Check for null and valid format.

yes

vfprintf_s

fprintf_s

Stream

Check for null and valid format.

no

vfwprintf

fwprintf

Stream

Check for null.

no

vfwprintf_p

fwprintf_p

Stream

Check for null and valid format.

yes

vfwprintf_s

fwprintf_s

Stream

Check for null and valid format.

no

vprintf

printf

Stdout

Check for null.

no

vprintf_p

printf_p

Stdout

Check for null and valid format.

yes

vprintf_s

printf_s

Stdout

Check for null and valid format.

no

vwprintf

wprintf

Stdout

Check for null.

no

vwprintf_p

wprintf_p

Stdout

Check for null and valid format.

yes

vwprintf_s

wprintf_s

Stdout

Check for null and valid format.

no

vsprintf

sprintf

memory pointed to by buffer

Check for null.

no

vsprintf_p

sprintf_p

memory pointed to by buffer

Check for null and valid format.

yes

vsprintf_s

sprintf_s

memory pointed to by buffer

Check for null and valid format.

no

vswprintf

swprintf

memory pointed to by buffer

Check for null.

no

vswprintf_p

swprintf_p

memory pointed to by buffer

Check for null and valid format.

yes

vswprintf_s

swprintf_s

memory pointed to by buffer

Check for null and valid format.

no

_vscprintf

_vscprintf

memory pointed to by buffer

Check for null.

no

_vscwprintf

_vscwprintf

memory pointed to by buffer

Check for null.

no

_vsnprintf

_snprintf

memory pointed to by buffer

Check for null.

no

_vsnwprintf

_snwprintf

memory pointed to by buffer

Check for null.

no

The argptr argument has type va_list, which is defined in VARARGS.H and STDARG.H. The argptr variable must be initialized by va_start, and may be reinitialized by subsequent va_arg calls; argptr then points to the beginning of a list of arguments that are converted and transmitted for output according to the corresponding specifications in the format argument. format has the same form and function as the format argument for printf. None of these functions invokes va_end. For a more complete description of each vprintf function, see the description of its counterpart function as listed in the preceding table.

_vsnprintf differs from vsprintf in that it writes no more than count bytes to buffer.

The versions of these functions with the w infix in the name are wide-character versions of the corresponding functions without the w infix; in each of these wide-character functions, buffer and format are wide-character strings. Otherwise, each wide-character function behaves identically to its SBCS counterpart function.

The versions of these functions with _s and _p suffixes are the more secure versions. These versions validate the format strings and will generate an exception if the format string is not well formed (for example, if invalid formatting characters are used).

The versions of these functions with the _p suffix provide the ability to specify the order in which the supplied arguments are substituted in the format string. For more information, see printf_p Positional Parameters.

For vsprintf, vswprintf, _vsnprintf and _vsnwprintf, if copying occurs between strings that overlap, the behavior is undefined.

Security noteSecurity Note:

Ensure that format is not a user-defined string. For more information, see Avoiding Buffer Overruns. If using the secure versions of these functions (either the _s or _p suffixes), a user-supplied format string could trigger an invalid parameter exception if the user-supplied string contains invalid formatting characters.

See Also

Concepts

Stream 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