_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_s
printf_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_l
fwprintf_s
_fwprintf_s_l
printf_s
, , _printf_s_l
wprintf_s
_wprintf_s_l
sprintf_s
, , _sprintf_s_l
swprintf_s
_swprintf_s_l
vfprintf_s
, , _vfprintf_s_l
vfwprintf_s
_vfwprintf_s_l
Синтаксис спецификации форматирования: printf
и wprintf
функции