_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 Features 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
);

Parameters

  • format
    Format specification.

  • argptr
    Pointer to list of arguments.

  • locale
    The locale to use.

For more information, see Format Specifications.

Return Value

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

Remarks

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 noteSecurity Note

Ensure that format is not a user-defined string. For more information, see Avoiding Buffer Overruns.

Generic-Text Routine Mappings

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

Requirements

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.

Example

// 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 );
}
  (10,23): Error C2111 : <some error text>
  (Related to symbol '<symbol>' defined on line 5).

.NET Framework Equivalent

System::Console::Write

See Also

Reference

Stream I/O

vprintf Functions

_cprintf, _cprintf_l, _cwprintf, _cwprintf_l

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