Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Печатает форматированные данные в поток. Эти функции — это версии fprintf
, fwprintf
_fprintf_l
с улучшениями безопасности, _fwprintf_l
как описано в функциях безопасности в CRT.
Дополнительные сведения _ftprintf_s
см_ftprintf_s_l
. в сопоставлениях функций универсального текста.
Синтаксис
int fprintf_s(
FILE *stream,
const char *format [,
argument_list ]
);
int _fprintf_s_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument_list ]
);
int fwprintf_s(
FILE *stream,
const wchar_t *format [,
argument_list ]
);
int _fwprintf_s_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument_list ]
);
Параметры
stream
Указатель на структуру FILE
.
format
Строка управления форматом.
argument_list
Необязательные аргументы в строке форматирования.
locale
Используемый языковой стандарт.
Возвращаемое значение
fprintf_s
возвращает число записанных байтов. fwprintf_s
возвращает число записанных расширенных символов. В случае ошибки вывода каждая из этих функций возвращает отрицательное значение.
Замечания
Функция fprintf_s
форматирует и выводит набор символов и значений в выходной поток stream
. Каждый аргумент в argument_list
(если таковой) преобразуется и выводится в соответствии с соответствующей спецификацией формата.format
Аргумент format
использует синтаксис спецификации формата для printf
и wprintf
функций.
fwprintf_s
— версия функции fprintf_s
для расширенных символов; в функции fwprintf_s
параметр format
— это строка расширенных символов. Эти функции ведут себя одинаково, если поток открыт в режиме ANSI. Функция fprintf_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".
Как и небезопасные версии (см_fprintf_l
fprintf
. , fwprintf
), _fwprintf_l
эти функции проверяют свои параметры и вызывают обработчик недопустимых параметров, как описано в описании проверки параметров, если какой-либо stream
или format
является NULL
указателем. Сама строка формата также проверяется. При наличии любых неизвестных или неправильно сформированных описателей форматирования эти функции создают исключение недопустимого параметра. Во всех случаях, если выполнение может быть продолжено, функции возвращают –1 и устанавливают параметр errno
в значение EINVAL
. Дополнительные сведения о кодах возврата см. в разделе errno
, _doserrno
_sys_errlist
и _sys_nerr
.
Сопоставления функций универсального текста
Функция в столбце сопоставляется с функцией в tchar.h
других столбцах в зависимости от набора символов, определенного во время компиляции.
Функция tchar.h |
_UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_ftprintf_s |
fprintf_s |
fprintf_s |
fwprintf_s |
_ftprintf_s_l |
_fprintf_s_l |
_fprintf_s_l |
_fwprintf_s_l |
Дополнительные сведения см. в разделе "Синтаксис спецификации формата".
Требования
Function | Обязательный заголовок |
---|---|
fprintf_s , _fprintf_s_l |
<stdio.h> |
fwprintf_s , _fwprintf_s_l |
<stdio.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_fprintf_s.c
// This program uses fprintf_s to format various
// data and print it to the file named FPRINTF_S.OUT. It
// then displays FPRINTF_S.OUT on the screen using the system
// function to invoke the operating-system TYPE command.
#include <stdio.h>
#include <process.h>
FILE *stream;
int main( void )
{
int i = 10;
double fp = 1.5;
char s[] = "this is a string";
char c = '\n';
fopen_s( &stream, "fprintf_s.out", "w" );
fprintf_s( stream, "%s%c", s, c );
fprintf_s( stream, "%d\n", i );
fprintf_s( stream, "%f\n", fp );
fclose( stream );
system( "type fprintf_s.out" );
}
this is a string
10
1.500000
См. также
Потоковый ввод-вывод
_cprintf
, , _cprintf_l
_cwprintf
_cwprintf_l
fscanf
, , _fscanf_l
fwscanf
_fwscanf_l
sprintf
, , _sprintf_l
swprintf
, _swprintf_l
__swprintf_l