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, _vsnwprintfvsprintf, 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 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_end, va_start