_cprintf_s, , _cprintf_s_l_cwprintf_s_cwprintf_s_l

Форматируют и выводят данные на консоль. Эти версии , _cwprintf_l_cprintf_l_cwprintf имеют улучшения безопасности, как описано в функциях _cprintfбезопасности в CRT.

Внимание

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

Синтаксис

int _cprintf_s(
   const char * format [,
   argument] ...
);
int _cprintf_s_l(
   const char * format,
   _locale_t locale [,
   argument] ...
);
int _cwprintf_s(
   const wchar * format [,
   argument] ...
);
int _cwprintf_s_l(
   const wchar * format,
   _locale_t locale [,
   argument] ...
);

Параметры

format
Строка управления форматом.

argument
Дополнительные параметры.

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

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

Число отображаемых символов.

Замечания

Эти функции форматируют и выводят последовательности символов и значений напрямую на консоль, используя функцию _putch (_putwch для _cwprintf_s) для вывода символов. Каждый argument (если он есть) преобразуется и выводится согласно соответствующей спецификацией формата в format. Формат имеет ту же форму и функцию, что format и параметр для printf_s функции. fprintf_sprintf_sВ отличие от функций и sprintf_s функций, _cprintf_s и _cwprintf_s не преобразуйте символы строкового канала в сочетания возвращаемой строки каретки (CR-LF) при выходе.

Важное отличие заключается в том, что функция _cwprintf_s показывает символы Юникода при использовании в Windows NT. В отличие от функции _cprintf_s, функция _cwprintf_s использует текущий языковый стандарт консоли.

Версии этих функций с суффиксом _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".

Как и небезопасные версии (см_cprintf. , _cwprintf_cprintf_l), _cwprintf_lэти функции проверяют свои параметры и вызывают обработчик недопустимых параметров, как описано в разделе "Проверка параметров", если format это пустой указатель. Эти функции отличаются от небезопасных версий тем, что также проверяется сама строка формата. При наличии любых неизвестных или неправильно сформированных описателей форматирования эти функции вызывают обработчик недопустимых параметров. Во всех случаях, если выполнение может быть продолжено, функции возвращают –1 и устанавливают параметр errno в значение EINVAL.

Сопоставления подпрограмм универсального текста

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcprintf_s _cprintf_s _cprintf_s _cwprintf_s
_tcprintf_s_l _cprintf_s_l _cprintf_s_l _cwprintf_s_l

Требования

Маршрут Обязательный заголовок
_cprintf_s, _cprintf_s_l <conio.h>
_cwprintf_s, _cwprintf_s_l <conio.h>

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

Библиотеки

Все версии библиотек времени выполнения языка C.

Пример

// crt_cprintf_s.c
// compile with: /c
// This program displays some variables to the console.

#include <conio.h>

int main( void )
{
   int      i = -16, h = 29;
   unsigned u = 62511;
   char     c = 'A';
   char     s[] = "Test";

   /* Note that console output does not translate \n as
    * standard output does. Use \r\n instead.
    */
   _cprintf_s( "%d  %.4x  %u  %c %s\r\n", i, h, u, c, s );
}
-16  001d  62511  A Test

См. также

Консоль и порт ввода-вывода
_cscanf, , _cscanf_l_cwscanf_cwscanf_l
fprintf_s, , _fprintf_s_lfwprintf_s_fwprintf_s_l
printf_s, , _printf_s_lwprintf_s_wprintf_s_l
sprintf_s, , _sprintf_s_lswprintf_s_swprintf_s_l
vfprintf_s, , _vfprintf_s_lvfwprintf_s_vfwprintf_s_l
Синтаксис спецификации форматирования: printf и wprintf функции