Sdílet prostřednictvím


_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_pmá 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_ltyto 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 EINVALhodnotu .

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