Udostępnij za pośrednictwem


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ń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

Strumień we/wy

Funkcje vprintf

Składnia specyfikacji formatu: funkcje printf i wprintf

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg, va_end, va_start