vprintf
, funkcje
Każda z vprintf
funkcji przyjmuje wskaźnik do listy argumentów, a następnie formatuje i zapisuje dane w określonym miejscu docelowym. Funkcje różnią się na kilka sposobów: w weryfikacji parametru, niezależnie od tego, czy funkcje przyjmują ciągi jednobajtowe, szerokie znaki, miejsce docelowe danych wyjściowych i obsługę określania parametrów kolejności są używane w ciągu formatu.
_vcprintf
, _vcwprintf
vfprintf
, vfwprintf
_vfprintf_p
, , _vfprintf_p_l
, , _vfwprintf_p
_vfwprintf_p_l
vfprintf_s
, , _vfprintf_s_l
, , vfwprintf_s
_vfwprintf_s_l
vprintf
, vwprintf
_vprintf_p
, , _vprintf_p_l
, , _vwprintf_p
_vwprintf_p_l
vprintf_s
, , _vprintf_s_l
, , vwprintf_s
_vwprintf_s_l
_vscprintf
, , _vscprintf_l
, , _vscwprintf
_vscwprintf_l
_vsnprintf
, , _vsnwprintf
vsprintf
vswprintf
_vsprintf_p
, , _vsprintf_p_l
, , _vswprintf_p
_vswprintf_p_l
vsprintf_s
, , _vsprintf_s_l
, , vswprintf_s
_vswprintf_s_l
Uwagi
Funkcje vprintf
są podobne do ich odpowiedników, jak pokazano w poniższej tabeli. Jednak każda vprintf
funkcja akceptuje wskaźnik do listy argumentów, podczas gdy każda z funkcji odpowiedników akceptuje listę argumentów.
Te funkcje formatować dane wyjściowe do miejsc docelowych w następujący sposób.
Function | Funkcja odpowiednika | Miejsce docelowe danych wyjściowych | Sprawdzanie poprawności parametru | Obsługa parametrów pozycyjnych |
---|---|---|---|---|
_vcprintf |
_cprintf |
console | Sprawdź, czy nie ma wartości null. | nie |
_vcwprintf |
_cwprintf |
console | Sprawdź, czy nie ma wartości null. | nie |
vfprintf |
fprintf |
stream |
Sprawdź, czy nie ma wartości null. | nie |
vfprintf_p |
fprintf_p |
stream |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | tak |
vfprintf_s |
fprintf_s |
stream |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | nie |
vfwprintf |
fwprintf |
stream |
Sprawdź, czy nie ma wartości null. | nie |
vfwprintf_p |
fwprintf_p |
stream |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | tak |
vfwprintf_s |
fwprintf_s |
stream |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | nie |
vprintf |
printf |
stdout |
Sprawdź, czy nie ma wartości null. | nie |
vprintf_p |
printf_p |
stdout |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | tak |
vprintf_s |
printf_s |
stdout |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | nie |
vwprintf |
wprintf |
stdout |
Sprawdź, czy nie ma wartości null. | nie |
vwprintf_p |
wprintf_p |
stdout |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | tak |
vwprintf_s |
wprintf_s |
stdout |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | nie |
vsprintf |
sprintf |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null. | nie |
vsprintf_p |
sprintf_p |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | tak |
vsprintf_s |
sprintf_s |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | nie |
vswprintf |
swprintf |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null. | nie |
vswprintf_p |
swprintf_p |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | tak |
vswprintf_s |
swprintf_s |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null i prawidłowego formatu. | nie |
_vscprintf |
_vscprintf |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null. | nie |
_vscwprintf |
_vscwprintf |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null. | nie |
_vsnprintf |
_snprintf |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null. | nie |
_vsnwprintf |
_snwprintf |
pamięć wskazywana przez buffer |
Sprawdź, czy nie ma wartości null. | nie |
Argument argptr
ma typ va_list
, który jest zdefiniowany w VARARGS. H i STDARG.H. Zmienna argptr
musi zostać zainicjowana przez va_start i może zostać ponownie zainicjowana przez kolejne va_arg
wywołania, argptr
a następnie wskazuje początek listy argumentów, które są konwertowane i przesyłane dla danych wyjściowych zgodnie z odpowiednimi specyfikacjami w argumencie format
. format
ma ten sam formularz i funkcję co format
argument dla printf
elementu . Żadna z tych funkcji nie wywołuje funkcji va_end
. Aby uzyskać bardziej szczegółowy opis każdej vprintf
funkcji, zobacz opis funkcji jej odpowiednika, jak pokazano w poprzedniej tabeli.
_vsnprintf
różni się od vsprintf
tego, że zapisuje nie więcej niż count
bajty na buffer
.
Wersje tych funkcji z prefiksem w nazwie to wersje szerokiego znaku odpowiednich funkcji bez wfiksu; w każdej z tych funkcji buffer
o szerokim znaku i format
są ciągami o szerokim znaku. W przeciwnym razie każda funkcja szerokoznakowa zachowuje się identycznie z funkcją odpowiednika SBCS.
Wersje tych funkcji z sufiksami _s
i _p
to bezpieczniejsze wersje. Te wersje weryfikują ciągi formatu. Wygenerują wyjątek, jeśli ciąg formatu nie jest poprawnie sformułowany (na przykład jeśli są używane nieprawidłowe znaki formatowania).
Wersje tych funkcji z sufiksem _p
umożliwiają określenie kolejności, w której podane argumenty są zastępowane w ciągu formatu. Aby uzyskać więcej informacji, zobacz printf_p Parametry pozycyjne.
W przypadku vsprintf
elementów , vswprintf
_vsnprintf
i _vsnwprintf
, jeśli kopiowanie występuje między ciągami, które nakładają się na siebie, zachowanie jest niezdefiniowane.
Ważne
Upewnij się, że format
nie jest to ciąg zdefiniowany przez użytkownika. Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu. Jeśli używasz bezpiecznych wersji tych funkcji ( _s
sufiksów lub _p
), ciąg formatu dostarczony przez użytkownika może wyzwolić nieprawidłowy wyjątek parametru, jeśli ciąg dostarczony przez użytkownika zawiera nieprawidłowe znaki formatowania.
Zobacz też
We/Wy strumienia
fprintf
, , _fprintf_l
, , fwprintf
_fwprintf_l
printf
, , _printf_l
, , wprintf
_wprintf_l
sprintf
, , _sprintf_l
, swprintf
, , _swprintf_l
__swprintf_l
va_arg
, , va_copy
, , va_end
va_start