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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla