Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

_vscprintf_p, _vscprintf_p_l, _vscwprintf_p, _vscwprintf_p_l

Returns the number of characters in the formatted string using a pointer to a list of arguments, with the ability to specify the order in which the arguments are used.

int _vscprintf_p(
   const char *format,
   va_list argptr 
int _vscprintf_p _l(
   const char *format,
   locale_t locale,
   va_list argptr 
int _vscwprintf_p (
   const wchar_t *format,
   va_list argptr 
int _vscwprintf_p _l(
   const wchar_t *format,
   locale_t locale,
   va_list argptr 


Format-control string.


Pointer to list of arguments.


The locale to use.

_vscprintf_p returns the number of characters that would be generated if the string pointed to by the list of arguments was printed or sent to a file or buffer using the specified formatting codes. The value returned does not include the terminating null character. _vscwprintf_p performs the same function for wide characters.

These functions differ from _vscprintf and _vscwprintf only in that they support the ability to specify the order in which the arguments are used. For more information, see printf_p Positional Parameters.

The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

If format is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, the functions return -1 and set errno to EINVAL.

Security noteSecurity Note:

Ensure that if format is a user-defined string, it is null terminated and has the correct number and type of parameters. For more information, see Avoiding Buffer Overruns.

Generic-Text Routine Mappings

TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined










Required header

_vscprintf_p, _vscprintf_p_l


_vscwprintf_p, _vscwprintf_p_l

<stdio.h> or <wchar.h>

For additional compatibility information, see Compatibility in the Introduction.

See the example for vsprintf.

Community Additions

© 2015 Microsoft