vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l
Zapis sformatowane dane wyjściowe przy użyciu wskaźnika do listy argumentów.Bezpieczniejsze wersje te funkcje są dostępne; see vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l.
int vsnprintf(
char *buffer,
size_t count,
const char *format,
va_list argptr
);
int _vsnprintf(
char *buffer,
size_t count,
const char *format,
va_list argptr
);
int _vsnprintf_l(
char *buffer,
size_t count,
const char *format,
locale_t locale,
va_list argptr
);
int _vsnwprintf(
wchar_t *buffer,
size_t count,
const wchar_t *format,
va_list argptr
);
int _vsnwprintf_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
);
template <size_t size>
int vsnprintf(
char (&buffer)[size],
size_t count,
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnprintf(
char (&buffer)[size],
size_t count,
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnprintf_l(
char (&buffer)[size],
size_t count,
const char *format,
locale_t locale,
va_list argptr
); // C++ only
template <size_t size>
int _vsnwprintf(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnwprintf_l(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
); // C++ only
Parametry
buffer
Miejsca przechowywania danych wyjściowych.count
Maksymalna liczba znaków do zapisu.format
Specyfikacja formatu.argptr
Wskaźnik do listy argumentów.locale
Ustawienia regionalne, aby użyć.
Aby uzyskać więcej informacji, zobacz Specyfikacji formatu.
Wartość zwracana
vsnprintf,_vsnprintf, i _vsnwprintf zwraca liczbę znaków, napisane, jeśli liczba znaków do zapisu jest mniejsza lub równa count; Jeśli liczba znaków do zapisu jest większa niż count, te funkcje zwrotu -1, wskazująca zostały obcięte dane wyjściowe.Zwracana wartość nie obejmuje zakończeń null, jeśli jeden jest zapisywany.
Jeśli buffer lub format jest NULL, lub jeśli liczba jest mniejsza lub równa zero, te funkcje WYWOŁAJ obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają wartość -1 i errno do EINVAL.
Uwagi
Każda z tych funkcji ma wskaźnik do listy argumentów, a następnie formatuje dane i zapisuje do count znaków do pamięci wskazywanej przez buffer.Jeśli jest miejsca na końcu (to znaczy, jeśli liczba znaków do pisania jest mniej niż count), bufor będzie zakończony znakiem null.
Uwaga dotycząca zabezpieczeń |
---|
Zapewnić, że format nie jest ciągiem zdefiniowane przez użytkownika.Aby uzyskać więcej informacji, zobacz Overruns buforu unikanie. |
[!UWAGA]
W celu zapewnienia jest miejsce dla zakończeń null, upewnij się, że count jest ściśle mniejsza niż długość buforu i zainicjować buforu do zera przed do wywoływania funkcji.
vsnprintfjest taka sama, jak _vsnprintf.vsnprintfjest uwzględniony w zgodności z ANSI standardowych; _vnsprintfjest zachowywana w zgodności z poprzednimi wersjami.
Wersje te funkcje, z _l sufiks są identyczne, z wyjątkiem, że używają oni przekazany zamiast bieżące ustawienia regionalne wątku parametr ustawień regionalnych.
W języku C++ funkcje te mają overloads szablonu, które wywołują nowsze, bezpieczne odpowiednikami tych funkcji.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_vsntprintf |
_vsnprintf |
_vsnprintf |
_vsnwprintf |
_vsntprintf_l |
_vsnprintf_l |
_vsnprintf_l |
_vsnwprintf_l |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
Opcjonalna nagłówki |
---|---|---|
vsnprintf |
<stdio.h> i <stdarg.h> |
<varargs.h> * |
_vsnprintf, _vsnprintf_l |
<stdio.h> i <stdarg.h> |
<varargs.h> * |
_vsnwprintf, _vsnwprintf_l |
<stdio.h> lub <wchar.h> i <stdarg.h> |
<varargs.h> * |
* Wymagane dla zgodności v systemu UNIX.
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// crt_vsnprintf.cpp
// compile with: /W3
#include <stdio.h>
#include <wtypes.h>
void FormatOutput(LPCSTR formatstring, ...)
{
int nSize = 0;
char buff[10];
memset(buff, 0, sizeof(buff));
va_list args;
va_start(args, formatstring);
nSize = vsnprintf( buff, sizeof(buff) - 1, formatstring, args); // C4996
// Note: vsnprintf is deprecated; consider vsnprintf_s instead
printf("nSize: %d, buff: %s\n", nSize, buff);
}
int main() {
FormatOutput("%s %s", "Hi", "there");
FormatOutput("%s %s", "Hi", "there!");
FormatOutput("%s %s", "Hi", "there!!");
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.
Zobacz też
Informacje
Składnia specyfikacji formatu: funkcje printf i wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l