_vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l
Записывает форматированный результат на консоль, используя указатель на список аргументов. В этих версиях _vcprintf, _vcprintf_l, _vcwprintf, _vcwprintf_l усовершенствована безопасность, как описано в разделе Функции безопасности в CRT.
Важно!
Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
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
);
Параметры
format
Спецификация формата.argptr
Указатель на список аргументов.locale
Используемый языковой стандарт.
Для получения дополнительной информации см. Синтаксис описания формата: функции printf и wprintf.
Возвращаемое значение
Число записанных символов или отрицательное значение в случае ошибки вывода.
Как и менее безопасные версии этих функций, если format — нулевой указатель, вызываются обработчик недопустимого параметра, как описано в разделе Проверка параметров. Кроме того, в отличие от менее безопасных версий этих функций, если format не определяет допустимый формат, генерируется исключение недопустимого параметра. Если выполнение может продолжиться, эти функции возвращают код ошибки и устанавливают errno в этот код ошибки. Кодом ошибки по умолчанию является EINVAL, если не задано более конкретное значение.
Заметки
Каждая из этих функций принимает указатель на список аргументов, а затем форматирует и записывает заданные данные на консоль. _vcwprintf_s — это расширенная версия _vcprintf_s. Она принимает в качестве аргумента строку расширенных символов.
Версии этих функций с суффиксом _l идентичны за исключением того, что они используют переданный параметр языкового стандарта вместо текущего языкового стандарта.
![]() |
---|
Убедитесь, что format не является строкой, определяемой пользователем.Дополнительные сведения см. в разделе Как избежать переполнения буфера. |
Универсальное текстовое сопоставление функций
Подпрограмма TCHAR.H |
_UNICODE & _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_vtcprintf_s |
_vcprintf_s |
_vcprintf_s |
_vcwprintf_s |
_vtcprintf_s_l |
_vcprintf_s_l |
_vcprintf_s_l |
_vcwprintf_s_l |
Требования
Подпрограмма |
Обязательный заголовок |
Необязательные заголовки |
---|---|---|
_vcprintf_s, _vcprintf_s_l |
<conio.h> и <stdarg.h> |
<varargs.h>* |
_vcwprintf_s, _vcwprintf_s_l |
<conio.h> or <wchar.h>, and <stdarg.h> |
<varargs.h>* |
* Требуется для обеспечения совместимости с UNIX V.
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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 );
}
Эквивалент в .NET Framework
См. также
Ссылки
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l