Поделиться через


_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

System::Console::Write

См. также

Ссылки

Потоковый ввод-вывод

Функции vprintf

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