_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