_vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l
Write formatted output to the console using a pointer to a list of arguments. These are versions of _vcprintf, _vcprintf_l, _vcwprintf, _vcwprintf_l with security enhancements as described in Security Enhancements in the CRT.
int _vcprintf( const char* format, va_list argptr ); int _vcprintf( const char* format, locale_t locale, va_list argptr ); int _vcwprintf_s( const wchar_t* format, va_list argptr ); int _vcwprintf_s_l( const wchar_t* format, locale_t locale, va_list argptr );
For more information, see Format Specifications.
The number of characters written, or a negative value if an output error occurs.
Like the non-secure version of these functions, if format is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. Additionally, unlike the non-secure version of these functions, if format does not specify a valid format, an invalid parameter exception is generated. If execution is allowed to continue, these functions return
Each of these functions takes a pointer to an argument list, then formats and writes the given data to the console. _vcwprintf_s is the wide-character version of _vcprintf_s. It takes a wide-character string as an argument.
The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current locale.
Security Note: |
|---|
Ensure that format is not a user-defined string. For more information, see Avoiding Buffer Overruns. |
TCHAR.H routine | _UNICODE & _MBCS not defined | _MBCS defined | _UNICODE defined |
|---|---|---|---|
_vtcprintf_s | _vcprintf_s | _vcprintf_s | _vcwprintf_s |
_vtcprintf_s_l | _vcprintf_s_l | _vcprintf_s_l | _vcwprintf_s_l |
Routine | Required header | Optional headers |
|---|---|---|
_vcprintf_s, _vcprintf_s_l | <conio.h> and <stdarg.h> | <varargs.h>* |
_vcwprintf_s, _vcwprintf_s_l | <conio.h> or <wchar.h>, and <stdarg.h> | <varargs.h>* |
* Required for UNIX V compatibility.
For additional compatibility information, see Compatibility in the Introduction.
// crt_vcprintf_s.cpp
#include <conio.h>
#include <stdarg.h>
// An error formatting function used to print to the console.
int eprintf_s(const char* format, ...)
{
va_list args;
va_start(args, format);
return _vcprintf_s(format, args);
}
int main()
{
eprintf_s(" (%d:%d): Error %s%d : %s\n", 10, 23, "C", 2111,
"<some error text>");
eprintf_s(" (Related to symbol '%s' defined on line %d).\n",
"<symbol>", 5 );
}
Security Note: