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


vprintfФункции

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

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p, , _vfprintf_p_l_vfwprintf_p_vfwprintf_p_l
vfprintf_s, , _vfprintf_s_lvfwprintf_s_vfwprintf_s_l
vprintf, vwprintf
_vprintf_p, , _vprintf_p_l_vwprintf_p_vwprintf_p_l
vprintf_s, , _vprintf_s_lvwprintf_s_vwprintf_s_l
_vscprintf, , _vscprintf_l_vscwprintf_vscwprintf_l
_vsnprintf, , _vsnwprintfvsprintfvswprintf
_vsprintf_p, , _vsprintf_p_l_vswprintf_p_vswprintf_p_l
vsprintf_s, , _vsprintf_s_lvswprintf_s_vswprintf_s_l

Замечания

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

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

Function Функция-аналог Назначение выходных данных Проверка параметров Поддержка позиционных параметров
_vcprintf _cprintf console Проверка значений null. no
_vcwprintf _cwprintf console Проверка значений null. no
vfprintf fprintf stream Проверка значений null. no
vfprintf_p fprintf_p stream Проверка значений null и допустимого формата. yes
vfprintf_s fprintf_s stream Проверка значений null и допустимого формата. no
vfwprintf fwprintf stream Проверка значений null. no
vfwprintf_p fwprintf_p stream Проверка значений null и допустимого формата. yes
vfwprintf_s fwprintf_s stream Проверка значений null и допустимого формата. no
vprintf printf stdout Проверка значений null. no
vprintf_p printf_p stdout Проверка значений null и допустимого формата. yes
vprintf_s printf_s stdout Проверка значений null и допустимого формата. no
vwprintf wprintf stdout Проверка значений null. no
vwprintf_p wprintf_p stdout Проверка значений null и допустимого формата. yes
vwprintf_s wprintf_s stdout Проверка значений null и допустимого формата. no
vsprintf sprintf память, на которую указывает buffer Проверка значений null. no
vsprintf_p sprintf_p память, на которую указывает buffer Проверка значений null и допустимого формата. yes
vsprintf_s sprintf_s память, на которую указывает buffer Проверка значений null и допустимого формата. no
vswprintf swprintf память, на которую указывает buffer Проверка значений null. no
vswprintf_p swprintf_p память, на которую указывает buffer Проверка значений null и допустимого формата. yes
vswprintf_s swprintf_s память, на которую указывает buffer Проверка значений null и допустимого формата. no
_vscprintf _vscprintf память, на которую указывает buffer Проверка значений null. no
_vscwprintf _vscwprintf память, на которую указывает buffer Проверка значений null. no
_vsnprintf _snprintf память, на которую указывает buffer Проверка значений null. no
_vsnwprintf _snwprintf память, на которую указывает buffer Проверка значений null. no

Аргумент 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 в имени — это широко символьные версии соответствующих функций без infix; в каждой из этих расширенных символьных функций buffer и format являются строками широкого символа. Во всем остальном двухбайтовые версии функций работают полностью так же, как и соответствующие функции для однобайтовой кодировки.

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

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

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

Внимание

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

См. также

Потоковый ввод-вывод
fprintf, , _fprintf_lfwprintf_fwprintf_l
printf, , _printf_lwprintf_wprintf_l
sprintf, , _sprintf_lswprintf, _swprintf_l__swprintf_l
va_arg, , va_copyva_endva_start