vprintf Functions

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at 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, _vcwprintfvfprintf, vfwprintf
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_lvfprintf_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_lvsprintf, vswprintf
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_lvsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l
_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l_vsnprintf, _vsnwprintf

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.

FunctionCounterpart functionOutput destinationParameter ValidationPositional Parameter Support
_vcprintf_cprintfconsoleCheck for null.no
_vcwprintf_cwprintfconsoleCheck for null.no
vfprintffprintfStreamCheck for null.no
vfprintf_pfprintf_pStreamCheck for null and valid format.yes
vfprintf_sfprintf_sStreamCheck for null and valid format.no
vfwprintffwprintfStreamCheck for null.no
vfwprintf_pfwprintf_pStreamCheck for null and valid format.yes
vfwprintf_sfwprintf_sStreamCheck for null and valid format.no
vprintfprintfStdoutCheck for null.no
vprintf_pprintf_pStdoutCheck for null and valid format.yes
vprintf_sprintf_sStdoutCheck for null and valid format.no
vwprintfwprintfStdoutCheck for null.no
vwprintf_pwprintf_pStdoutCheck for null and valid format.yes
vwprintf_swprintf_sStdoutCheck for null and valid format.no
vsprintfsprintfmemory pointed to by bufferCheck for null.no
vsprintf_psprintf_pmemory pointed to by bufferCheck for null and valid format.yes
vsprintf_ssprintf_smemory pointed to by bufferCheck for null and valid format.no
vswprintfswprintfmemory pointed to by bufferCheck for null.no
vswprintf_pswprintf_pmemory pointed to by bufferCheck for null and valid format.yes
vswprintf_sswprintf_smemory pointed to by bufferCheck for null and valid format.no
_vscprintf_vscprintfmemory pointed to by bufferCheck for null.no
_vscwprintf_vscwprintfmemory pointed to by bufferCheck for null.no
_vsnprintf_snprintfmemory pointed to by bufferCheck for null.no
_vsnwprintf_snwprintfmemory pointed to by bufferCheck 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.

System_CAPS_ICON_important.jpg Important

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.

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_copy, va_end, va_start

Show: