_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l

Drukuje sformatowane dane do strumienia.

Składnia

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
Wskaźnik do FILE struktury.

format
Ciąg kontroli formatu.

argument
Argumenty opcjonalne.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

_fprintf_p i _fwprintf_p zwraca liczbę znaków zapisanych lub zwraca wartość ujemną w przypadku wystąpienia błędu wyjściowego.

Uwagi

_fprintf_p formatuje i drukuje serię znaków i wartości do danych wyjściowych stream. Każda funkcja argument (jeśli istnieje) jest konwertowana i wyjściowa zgodnie z odpowiednią specyfikacją formatu w pliku format. W przypadku _fprintf_pargumentu format ma taką samą składnię, jaką ma w elemecie _printf_p. Te funkcje obsługują parametry pozycyjne, co oznacza, że można zmienić kolejność parametrów używanych przez ciąg formatu. Aby uzyskać więcej informacji na temat parametrów pozycyjnych, zobacz printf_p Parametry pozycyjne.

_fwprintf_pjest wersją o szerokim znaku _fprintf_p; w , _fwprintf_pformat jest ciągiem o szerokim znaku. Te funkcje zachowują się identycznie, jeśli strumień jest otwarty w trybie ANSI. _fprintf_p obecnie nie obsługuje danych wyjściowych do strumienia UNICODE.

Wersje tych funkcji z sufiksem _l są identyczne, z tą różnicą, że używają parametru ustawień regionalnych przekazanych zamiast bieżących ustawień regionalnych.

Ważne

Upewnij się, że format nie jest to ciąg zdefiniowany przez użytkownika.

Począwszy od systemu Windows 10 w wersji 2004 (kompilacja 19041), printf rodzina funkcji drukuje dokładnie możliwe liczby zmiennoprzecinkowe zgodnie z regułami IEEE 754 dotyczącymi zaokrąglania. W poprzednich wersjach systemu Windows dokładnie reprezentowane liczby zmiennoprzecinkowe kończące się na "5" zawsze zaokrągla się w górę. IEEE 754 stwierdza, że muszą zaokrąglić do najbliższej parzysta cyfra (znana również jako "Zaokrąglanie Bankiera"). Na przykład oba printf("%1.0f", 1.5)printf("%1.0f", 2.5) elementy i powinny być zaokrąglone do 2. Wcześniej 1,5 zaokrągliłoby się do 2 i 2,5 do 3. Ta zmiana dotyczy tylko dokładnie możliwych do reprezentowania liczb. Na przykład 2,35 (który, gdy jest reprezentowany w pamięci, jest bliżej 2,350000000000000008) nadal zaokrągla się do 2,4. Zaokrąglanie wykonywane przez te funkcje jest teraz również zgodne z trybem zaokrąglania zmiennoprzecinkowego ustawionym przez fesetround. Wcześniej zaokrąglanie zawsze wybierało FE_TONEAREST zachowanie. Ta zmiana dotyczy tylko programów utworzonych przy użyciu programu Visual Studio 2019 w wersji 16.2 lub nowszej. Aby użyć starszego zachowania zaokrąglania zmiennoprzecinkowego, połącz się z elementem "legacy_stdio_float_rounding.obj".

Podobnie jak w przypadku wersji niezabezpieczonych (zobacz fprintf, _fprintf_l, fwprintf, _fwprintf_l), te funkcje weryfikują parametry i wywołują nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów, jeśli streamformat jest to wskaźnik o wartości null lub jeśli istnieją jakiekolwiek nieznane lub nieprawidłowo sformułowane specyfikatory formatowania. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcje zwracają wartość -1 i ustawiają wartość errnoEINVAL.

Mapowania procedur tekstu ogólnego

Procedura tchar.h _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_ftprintf_p _fprintf_p _fprintf_p _fwprintf_p
_ftprintf_p_l _fprintf_p_l _fprintf_p_l _fwprintf_p_l

Aby uzyskać więcej informacji, zobacz Składnia specyfikacji formatu.

Wymagania

Function Wymagany nagłówek
_fprintf_p, _fprintf_p_l <stdio.h>
_fwprintf_p, _fwprintf_p_l <stdio.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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

Zobacz też

We/Wy strumienia
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf, _fscanf_l, fwscanf, _fwscanf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
printf_p Parametry pozycyjne
_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l
_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l
printf_p Parametry pozycyjne
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l