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
Zobacz też
Informacje
Składnia specyfikacji formatu: funkcje printf i wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l