Sdílet prostřednictvím


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_ls 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 EINVALhodnotu . Další informace o návratových kódech naleznete v tématu errno, _doserrno, _sys_errlista _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