Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Записывают форматированные выходные данные с помощью указателя на список аргументов. Доступны более безопасные версии этих функций, см_vwprintf_s_l
Синтаксис
int vprintf(
const char *format,
va_list argptr
);
int _vprintf_l(
const char *format,
_locale_t locale,
va_list argptr
);
int vwprintf(
const wchar_t *format,
va_list argptr
);
int _vwprintf_l(
const wchar_t *format,
_locale_t locale,
va_list argptr
);
Параметры
format
Спецификация формата.
argptr
Указатель на список аргументов.
locale
Используемый языковой стандарт.
Дополнительные сведения см. в разделе "Синтаксис спецификации формата".
Возвращаемое значение
Функции vprintf и vwprintf возвращают число записанных символов, не включая конечный нуль-символ, или отрицательное значение, если произошла ошибка вывода. Если format имеет значение NULL или строка форматирования содержит недопустимые символы форматирования, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, функции возвращают значение -1 и задают для errno значение EINVAL.
Дополнительные сведения об этих и других кодах ошибок см. в разделе errno, _doserrno_sys_errlistи _sys_nerr.
Замечания
Каждая из этих функций принимает указатель на список аргументов, а затем форматирует и записывает указанные данные в stdout.
Функция vwprintf является версией функции vprintf с расширенными символами; обе функции ведут себя одинаково, если поток открыт в режиме ANSI. Функция vprintf на данный момент не поддерживает вывод данных в поток в кодировке Юникод.
Версии этих функций с суффиксом _l идентичны за исключением того, что они используют переданный параметр языкового стандарта вместо языкового стандарта текущего потока.
Внимание
Убедитесь, что format не является строкой, определяемой пользователем. Дополнительные сведения см. в разделе "Избегание переполнения буфера". Недопустимые строки форматирования обнаруживаются и приводят к ошибке.
Начиная с Windows 10 версии 2004 (сборка 19041), printf семейство функций выводит точно представленные числа с плавающей запятой в соответствии с правилами IEEE 754 для округления. В предыдущих версиях Windows точно представленные числа с плавающей запятой, заканчивающиеся на "5", всегда округлялись. IEEE 754 утверждает, что они должны округлиться до ближайшей даже цифры (также известной как "Округление банкира"). Например, оба printf("%1.0f", 1.5) и printf("%1.0f", 2.5) должны округлиться до 2. Ранее 1,5 округляет до 2 и 2,5 округления до 3. Это изменение влияет только на точно представленные числа. Например, 2.35 (который при представлении в памяти приближается к 2,3500000000000000008) продолжает округляется до 2,4. Округление, выполняемое этими функциями, теперь также учитывает режим округления с плавающей запятой, заданный fesetround. Ранее округление всегда выбрало FE_TONEAREST поведение. Это изменение влияет только на программы, созданные с помощью Visual Studio 2019 версии 16.2 и более поздних версий. Чтобы использовать устаревшее поведение округления с плавающей запятой, свяжите со legacy_stdio_float_rounding.objссылкой.
Сопоставления подпрограмм универсального текста
| Подпрограмма TCHAR.H |
_UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
|---|---|---|---|
_vtprintf |
vprintf |
vprintf |
vwprintf |
_vtprintf_l |
_vprintf_l |
_vprintf_l |
_vwprintf_l |
Требования
| Маршрут | Обязательный заголовок | Необязательные заголовки |
|---|---|---|
vprintf, _vprintf_l |
<stdio.h> и <stdarg.h> | <varargs.h>* |
vwprintf, _vwprintf_l |
<stdio.h> или <wchar.h и >stdarg.h<> | <varargs.h>* |
* Требуется для совместимости UNIX V.
Консоль не поддерживается в приложениях универсальная платформа Windows (UWP). Стандартные дескрипторы потока, связанные с консолью, stdinstdoutи stderr, должны быть перенаправлены перед тем, как функции времени выполнения C могут использовать их в приложениях UWP. Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Потоковый ввод-вывод
Функции vprintf
fprintf, , _fprintf_lfwprintf_fwprintf_l
printf, , _printf_lwprintf_wprintf_l
sprintf, , _sprintf_lswprintf, _swprintf_l__swprintf_l
va_arg, , va_copyva_endva_start