_fprintf_p
, , _fprintf_p_l
, _ftprintf_p
, _ftprintf_p_l
, , _fwprintf_p
_fwprintf_p_l
Drukuje sformatowane dane do strumienia.
Aby zapoznać _ftprintf_p
się z tematem i _ftprintf_p_l
, zobacz Ogólne mapowania funkcji tekstowych.
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_p
argumentu 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_p
jest wersją o szerokim znaku _fprintf_p
; w , _fwprintf_p
format
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 stream
format
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ść errno
EINVAL
.
Mapowania funkcji tekstu ogólnego
Funkcja w kolumnie tchar.h
jest mapowana na funkcję w innych kolumnach w zależności od zestawu znaków zdefiniowanego w czasie kompilacji.
Funkcja tchar.h |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_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