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


_vcprintf_p, _vcprintf_p_l, _vcwprintf_p, _vcwprintf_p_l

Пишет форматированные выходные данные на консоль, используя указатель на список аргументов, и поддерживает позиционные параметры в строке формата.

Важно!

Этот API не может использоваться в приложениях, выполняемых в Среда выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.

int _vcprintf_p(
   const char* format,
   va_list argptr
);
int _vcprintf_p_l(
   const char* format,
   locale_t locale,
   va_list argptr
);
int _vcwprintf_p(
   const wchar_t* format,
   va_list argptr
);
int _vcwprintf_p_l(
   const wchar_t* format,
   locale_t locale,
   va_list argptr
);

Параметры

  • format
    Спецификация формата.

  • argptr
    Указатель на список аргументов.

  • locale
    Используемый языковой стандарт.

Для получения дополнительной информации см. Синтаксис описания формата: функции printf и wprintf.

Возвращаемое значение

Число напечатанных символов или отрицательное значение, если возникла ошибка вывода. Если параметр format указывает на NULL, вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, errno устанавливается в значение EINVAL, и возвращается -1.

Заметки

Каждая из этих функций принимает указатель на список аргументов, а затем использует функцию _putch для форматирования и печати указанных данных на консоль. (_vcwprintf_p использует _putwch вместо _putch. _vcwprintf_p — это двухбайтовая версия _vcprintf_p. Она принимает в качестве аргумента строку расширенных символов).

Версии этих функций с суффиксом _l идентичны за исключением того, что они используют переданный параметр языкового стандарта вместо текущего языкового стандарта.

Каждый argument (если он есть) преобразуется и выводится согласно соответствующей спецификации формата в format. Спецификация формата поддерживает позиционные параметры, чтобы можно было задать порядок, в котором аргументы используются в строке формата. Для получения дополнительной информации см. Позиционные параметры printf_p.

Эти функции не переводят символы перевода строки в комбинации возврат каретки-перевод строки (CR-LF) во время вывода.

Примечание о безопасностиПримечание по безопасности

Убедитесь, что format не является строкой, определяемой пользователем.Дополнительные сведения см. в разделе Как избежать переполнения буфера.

Эти функции проверяют входной указатель и строку формата. Если format или argument имеют значение NULL, или если строка формата содержит недопустимые символы форматирования, эти функции вызывают обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, эти функции возвращают -1 и устанавливают errno в значение EINVAL.

Универсальное текстовое сопоставление функций

Подпрограмма Tchar.h

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_vtcprintf_p

_vcprintf_p

_vcprintf_p

_vcwprintf_p

_vtcprintf_p_l

_vcprintf_p_l

_vcprintf_p_l

_vcwprintf_p_l

Требования

Подпрограмма

Обязательный заголовок

_vcprintf_p, _vcprintf_p_l

<conio.h> и <stdarg.h>

_vcwprintf_p, _vcwprintf_p_l

<conio.h> и <stdarg.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_vcprintf_p.c
// compile with: /c
#include <conio.h>
#include <stdarg.h>

// An error formatting function that's used to print to the console.
int eprintf(const char* format, ...)
{
  va_list args;
  va_start(args, format);
  return _vcprintf_p(format, args);
}

int main()
{
   int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n",
      "one", 222);
   _cprintf_s("%d characters printed\r\n");
}
  

См. также

Ссылки

Ввод-вывод на консоль и порт

_cprintf, _cprintf_l, _cwprintf, _cwprintf_l

va_arg, va_copy, va_end, va_start

Позиционные параметры printf_p