Udostępnij za pośrednictwem


vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Zapis sformatowane dane wyjściowe przy użyciu wskaźnika do listy argumentów.Są to wersje vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.

int vsprintf_s(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   va_list argptr 
); 
int _vsprintf_s_l(
   char *buffer,
   size_t numberOfElements,
   const char *format,
   locale_t locale,
   va_list argptr 
); 
int vswprintf_s(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   va_list argptr 
);
int _vswprintf_s_l(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsprintf_s(
   char (&buffer)[size],
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int vswprintf_s(
   wchar_t (&buffer)[size],
   const wchar_t *format,
   va_list argptr 
); // C++ only

Parametry

  • buffer
    Miejsca przechowywania danych wyjściowych.

  • numberOfElements
    Rozmiar buffer w znakach.

  • format
    Specyfikacja formatu.

  • argptr
    Wskaźnik do listy argumentów.

  • locale
    Ustawienia regionalne, aby użyć.

Wartość zwracana

vsprintf_si vswprintf_s zwraca liczbę znaków, napisane, nie włączając kończącego znaku null lub wartości ujemne, jeśli wystąpi błąd danych wyjściowych.Jeśli buffer lub format jest wskaźnik null, jeśli liczba jest równa zero, lub jeśli ciąg formatu zawiera nieprawidłowe znaki formatowania, nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje zwracają wartość -1 i errno do EINVAL.

Informacji na temat tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

Uwagi

Każda z tych funkcji ma wskaźnik do listy argumentów i następnie formatuje i zapisuje danego danych do pamięci wskazywanej przez buffer.

vswprintf_sjest zgodny z c normy ISO dla vswprintf, który wymaga drugiego parametru count, typu size_t.

Funkcje te różnią się od wersji-secure, tylko w tym bezpiecznej wersji obsługuje parametry pozycyjne.Aby uzyskać więcej informacji, zobacz printf_p Parametry pozycyjne.

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++ korzystając z tych funkcji jest uproszczona poprzez overloads szablonu; overloads można automatycznie rozpoznać długość buforu (eliminując konieczność należy określić argument rozmiar) i automatycznie można zastąpić starszych, które nie są bezpieczne funkcje z ich odpowiednikami nowsze, bezpieczne.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rutynowe H

_UNICODE & Nie zdefiniowano _MBCS

_MBCS, definicja

_UNICODE, definicja

_vstprintf_s

vsprintf_s

vsprintf_s

vswprintf_s

_vstprintf_s_l

_vsprintf_s_l

_vsprintf_s_l

_vswprintf_s_l

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

Opcjonalna nagłówki

vsprintf_s, _vsprintf_s_l

<stdio.h> i <stdarg.h>

<varargs.h> *

vswprintf_s, _vswprintf_s_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_vsprintf_s.c
// This program uses vsprintf_s to write to a buffer.
// The size of the buffer is determined by _vscprintf.

#include <stdlib.h>
#include <stdarg.h>

void test( char * format, ... )
{
   va_list args;
   int len;
   char * buffer;

   va_start( args, format );
   len = _vscprintf( format, args ) // _vscprintf doesn't count
                               + 1; // terminating '\0'
   buffer = malloc( len * sizeof(char) );
   vsprintf_s( buffer, len, format, args );
   puts( buffer );
   free( buffer );
}

int main( void )
{
   test( "%d %c %d", 123, '<', 456 );
   test( "%s", "This is a string" );
}
  

Odpowiednik w programie .NET Framework

System::String::format

Zobacz też

Informacje

We/Wy strumienia

vprintf — Funkcje

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_copy, va_end, va_start