_fprintf_p
, _fprintf_p_l
, _ftprintf_p
, _ftprintf_p_l
, , _fwprintf_p
_fwprintf_p_l
Vytiskne formátovaná data do datového proudu.
A _ftprintf_p
viz mapování obecných textových funkcí._ftprintf_p_l
Syntaxe
int _fprintf_p(
FILE *stream,
const char *format [,
argument ]...
);
int _fprintf_p_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument ]...
);
int _fwprintf_p(
FILE *stream,
const wchar_t *format [,
argument ]...
);
int _fwprintf_p_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument ]...
);
Parametry
stream
Ukazatel na FILE
strukturu.
format
Řetězec řízení formátu
argument
Volitelné argumenty
locale
Národní prostředí, které se má použít
Vrácená hodnota
_fprintf_p
a _fwprintf_p
vrátí počet zapsaných znaků nebo vrátí zápornou hodnotu, když dojde k chybě výstupu.
Poznámky
_fprintf_p
formátuje a vytiskne řadu znaků a hodnot do výstupu stream
. Každá funkce argument
(pokud existuje) je převedena a výstup podle odpovídající specifikace formátu v format
. format
Argument _fprintf_p
má stejnou syntaxi jako v argumentu _printf_p
. Tyto funkce podporují poziční parametry, což znamená, že pořadí parametrů používaných formátovacím řetězcem lze změnit. Další informace o pozičních parametrech najdete v tématu printf_p poziční parametry.
_fwprintf_p
je širokoznaková verze znaku _fprintf_p
; in _fwprintf_p
, format
je řetězec širokého znaku. Tyto funkce se chovají stejně, pokud je datový proud otevřen v režimu ANSI. _fprintf_p
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čené verze (viz fprintf
, fwprintf
_fprintf_l
, ), _fwprintf_l
tyto funkce ověřují své parametry a vyvolávají neplatnou obslužnou rutinu parametrů, jak je popsáno v ověření parametru, pokud je nebo stream
format
je nulový ukazatel nebo pokud existují nějaké neznámé nebo špatně formátované specifikátory formátování. Pokud je možné pokračovat spuštěním, funkce vrátí hodnotu -1 a nastaví errno
se na EINVAL
hodnotu .
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_p |
_fprintf_p |
_fprintf_p |
_fwprintf_p |
_ftprintf_p_l |
_fprintf_p_l |
_fprintf_p_l |
_fwprintf_p_l |
Další informace naleznete v tématu Syntaxe specifikace formátu.
Požadavky
Function | Požadovaný hlavičkový soubor |
---|---|
_fprintf_p , _fprintf_p_l |
<stdio.h> |
_fwprintf_p , _fwprintf_p_l |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_fprintf_p.c
// This program uses _fprintf_p to format various
// data and print it to the file named FPRINTF_P.OUT. It
// then displays FPRINTF_P.OUT on the screen using the system
// function to invoke the operating-system TYPE command.
//
#include <stdio.h>
#include <process.h>
int main( void )
{
FILE *stream = NULL;
int i = 10;
double fp = 1.5;
char s[] = "this is a string";
char c = '\n';
// Open the file
if ( fopen_s( &stream, "fprintf_p.out", "w" ) == 0)
{
// Format and print data
_fprintf_p( stream, "%2$s%1$c", c, s );
_fprintf_p( stream, "%d\n", i );
_fprintf_p( stream, "%f\n", fp );
// Close the file
fclose( stream );
}
// Verify our data
system( "type fprintf_p.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
printf_p – poziční parametry
_cprintf_p
, _cprintf_p_l
, , _cwprintf_p
_cwprintf_p_l
_cprintf_s
, _cprintf_s_l
, , _cwprintf_s
_cwprintf_s_l
printf_p – poziční parametry
fscanf_s
, _fscanf_s_l
, , fwscanf_s
_fwscanf_s_l