fprintf_s
, _fprintf_s_l
, fwprintf_s
, , _ftprintf
_fwprintf_s_l
, _ftprintf_l
, , _ftprintf_s
_ftprintf_s_l
Vytiskněte formátovaná data do datového proudu. Tyto funkce jsou verze fprintf
, _fprintf_l
, fwprintf
_fwprintf_l
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
A _ftprintf_s
viz mapování obecných textových funkcí._ftprintf_s_l
Syntaxe
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 ]
);
Parametry
stream
Ukazatel na FILE
strukturu.
format
Řetězec řízení formátu
argument_list
Volitelné argumenty pro formátovací řetězec
locale
Národní prostředí, které se má použít
Vrácená hodnota
fprintf_s
vrátí počet zapsaných bajtů. fwprintf_s
vrátí počet zapsaných širokých znaků. Každá z těchto funkcí místo toho vrátí zápornou hodnotu, když dojde k chybě výstupu.
Poznámky
fprintf_s
formátuje a vytiskne řadu znaků a hodnot do výstupu stream
. Každý argument v argument_list
(pokud existuje) je převeden a výstup podle odpovídající specifikace formátu v format
. Argument format
používá syntaxi specifikace formátu pro printf
a wprintf
funkce.
fwprintf_s
je širokoznaková verze znaku fprintf_s
; in fwprintf_s
, format
je řetězec širokého znaku. Tyto funkce se chovají stejně, pokud je datový proud otevřen v režimu ANSI. fprintf_s
v současné době nepodporuje výstup do datového proudu UNICODE.
Verze těchto funkcí s příponou _l
jsou shodné s tím rozdílem, že místo aktuálního národního prostředí používají předaný parametr národního prostředí.
Důležité
Ujistěte se, že format
není uživatelem definovaný řetězec.
Počínaje Windows 10 verze 2004 (build 19041) printf
vytiskne řada funkcí přesně reprezentovatelná čísla s plovoucí desetinnou čárkou podle pravidel IEEE 754 pro zaokrouhlování. V předchozích verzích Windows by se vždy zaokrouhlila přesně reprezentovatelná čísla s plovoucí desetinnou čárkou končící na 5. IEEE 754 uvádí, že musí zaokrouhlit na nejbližší sudou číslici (označované také jako "Zaokrouhlování bankera"). Například obě printf("%1.0f", 1.5)
a printf("%1.0f", 2.5)
měly by se zaokrouhlit na 2. Dříve by se 1,5 zaokrouhlo na 2 a 2,5 by se zaokrouhlilo na 3. Tato změna má vliv jenom na přesně reprezentovatelná čísla. Například hodnota 2,35 (která je při znázornění v paměti blíže 2,350000000000008) pokračuje zaokrouhlit nahoru na 2,4. Zaokrouhlování provedené těmito funkcemi nyní respektuje také režim zaokrouhlování s plovoucí desetinou čárkou nastavený .fesetround
Dříve bylo zaokrouhlení vždy zvoleno FE_TONEAREST
chování. Tato změna má vliv jenom na programy vytvořené pomocí sady Visual Studio 2019 verze 16.2 a novější. Pokud chcete použít starší chování zaokrouhlení s plovoucí desetinou čárkou, použijte odkaz na legacy_stdio_float_rounding.obj.
Podobně jako nezabezpečované verze (viz fprintf
, _fprintf_l
, fwprintf
, _fwprintf_l
), tyto funkce ověřují své parametry a vyvolávají neplatnou obslužnou rutinu parametrů, jak je popsáno v ověření parametruNULL
, pokud je to nebo stream
format
je ukazatel. Samotný formátovací řetězec je také ověřen. Pokud existují nějaké neznámé nebo špatně vytvořené specifikátory formátování, tyto funkce generují neplatnou výjimku parametru. Ve všech případech může provádění pokračovat, funkce vrátí hodnotu -1 a nastaví errno
se na EINVAL
hodnotu . Další informace o návratových kódech naleznete v tématu errno
, _doserrno
, _sys_errlist
a _sys_nerr
.
Mapování obecných textových funkcí
Funkce ve sloupci tchar.h
se mapuje na funkci v ostatních sloupcích v závislosti na znakové sadě, která je definována v době kompilace.
Funkce tchar.h |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_ftprintf_s |
fprintf_s |
fprintf_s |
fwprintf_s |
_ftprintf_s_l |
_fprintf_s_l |
_fprintf_s_l |
_fwprintf_s_l |
Další informace naleznete v tématu Syntaxe specifikace formátu.
Požadavky
Function | Požadovaný hlavičkový soubor |
---|---|
fprintf_s , _fprintf_s_l |
<stdio.h> |
fwprintf_s , _fwprintf_s_l |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Vstupně-výstupní operace streamu
_cprintf
, _cprintf_l
, , _cwprintf
_cwprintf_l
fscanf
, _fscanf_l
, , fwscanf
_fwscanf_l
sprintf
, _sprintf_l
, swprintf
, , _swprintf_l
__swprintf_l