Функции vprintf

Каждая из функций vprintf принимает указатель на список аргументов, затем форматирует и записывает полученные данные в определенное местоположение. Функции отличаются выполняемой проверкой параметров, тем, принимают ли функции многобайтовые или однобайтовые символьные строки, выходным местоназначением и поддержкой указания порядка, в котором параметры используются в строке форматирования.

_vcprintf, _vcwprintf

vfprintf, vfwprintf

_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l

vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l

vprintf, vwprintf

_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l

vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l

vsprintf, vswprintf

_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l

_vsnprintf, _vsnwprintf

Заметки

Функции vprintf аналогичны эквивалентным им функциям, указанным в приведенной ниже таблице. Однако каждая функция vprintf принимает указатель на список аргументов, в то время как каждая из функций-аналогов принимает список аргументов.

Эти функции форматируют данные для вывода в местоназначение следующим образом.

Функция

Функция-аналог

Назначение вывода

Проверка параметров

Поддержка позиционного параметра

_vcprintf

_cprintf

консоль

Проверка на значение null.

нет

_vcwprintf

_cwprintf

консоль

Проверка на значение null.

нет

vfprintf

fprintf

Поток

Проверка на значение null.

нет

vfprintf_p

fprintf_p

Поток

Проверка допустимого формата и проверка на значение null.

да

vfprintf_s

fprintf_s

Поток

Проверка допустимого формата и проверка на значение null.

нет

vfwprintf

fwprintf

Поток

Проверка на значение null.

нет

vfwprintf_p

fwprintf_p

Поток

Проверка допустимого формата и проверка на значение null.

да

vfwprintf_s

fwprintf_s

Поток

Проверка допустимого формата и проверка на значение null.

нет

vprintf

printf

Stdout

Проверка на значение null.

нет

vprintf_p

printf_p

Stdout

Проверка допустимого формата и проверка на значение null.

да

vprintf_s

printf_s

Stdout

Проверка допустимого формата и проверка на значение null.

нет

vwprintf

wprintf

Stdout

Проверка на значение null.

нет

vwprintf_p

wprintf_p

Stdout

Проверка допустимого формата и проверка на значение null.

да

vwprintf_s

wprintf_s

Stdout

Проверка допустимого формата и проверка на значение null.

нет

vsprintf

sprintf

память, указанная в buffer

Проверка на значение null.

нет

vsprintf_p

sprintf_p

память, указанная в buffer

Проверка допустимого формата и проверка на значение null.

да

vsprintf_s

sprintf_s

память, указанная в buffer

Проверка допустимого формата и проверка на значение null.

нет

vswprintf

swprintf

память, указанная в buffer

Проверка на значение null.

нет

vswprintf_p

swprintf_p

память, указанная в buffer

Проверка допустимого формата и проверка на значение null.

да

vswprintf_s

swprintf_s

память, указанная в buffer

Проверка допустимого формата и проверка на значение null.

нет

_vscprintf

_vscprintf

память, указанная в buffer

Проверка на значение null.

нет

_vscwprintf

_vscwprintf

память, указанная в buffer

Проверка на значение null.

нет

_vsnprintf

_snprintf

память, указанная в buffer

Проверка на значение null.

нет

_vsnwprintf

_snwprintf

память, указанная в buffer

Проверка на значение null.

нет

Аргумент argptr имеет тип va_list, который определен в VARARGS.H и STDARG.H. Переменная argptr должна быть инициализирована va_start, и может быть повторно инициализирована последующими вызовами va_arg; argptr затем указывает на начало списка аргументов, которые конвертируются и передаются на выход в соответствии со спецификациями в аргументе format. format имеет ту же форму и функцию, как и аргумента format для printf. Ни одна из этих функций не вызывает va_end. Более полное описание каждой функции vprintf смотрите в описании ее функции-аналога, как показано в приведенной выше таблице.

_vsnprintf отличается от vsprintf тем, что она записывает не более чем count байтов в buffer.

Версии этих функций с инфиксом w в имени являются версиями с многобайтовыми символами соответствующих функций без инфикса w; в каждой из этих функций с многобайтовыми символами buffer и format являются строками многобайтовых символов. В противном случае каждая функция с многобайтовыми символами работает так же, как ее функция-аналог со строками однобайтовых символов.

Версии этих функций с суффиксами _s и _p являются более безопасными. Эти версии проверяют строки форматирования и создают исключение, если строка форматирования сформирована неправильно (например, если используются недопустимые символы форматирования).

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

Для vsprintf, vswprintf, _vsnprintf и _vsnwprintf, для копирования, происходящего между строками, которые перекрываются, поведение не определено.

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

Убедитесь, что format не является строкой, определяемой пользователем.Дополнительные сведения см. в разделе Как избежать переполнения буфера.При использовании безопасных версий этих функций (либо суффикс _s, либо _p ) предоставленная пользователем строка форматирования может активировать исключение, связанное с недопустимым параметром, если эта строка содержит недопустимые символы форматирования.

См. также

Ссылки

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

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