Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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, , _vsnwprintfvsprintfvswprintf
_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 printfelementu . Ż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 vsprintfelementó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_endva_start