_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
Zapis sformatowane dane wyjściowe przy użyciu wskaźnika do listy argumentów, z możliwością, aby określić kolejność, w której używane są argumenty.
int _vsprintf_p(
char *buffer,
size_t sizeInBytes,
const char *format,
va_list argptr
);
int _vsprintf_p_l(
char *buffer,
size_t sizeInBytes,
const char *format,
locale_t locale,
va_list argptr
);
int _vswprintf_p(
wchar_t *buffer,
size_t count,
const wchar_t *format,
va_list argptr
);
int _vswprintf_p_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
);
Parametry
buffer
Miejsca przechowywania danych wyjściowych.sizeInBytes
Rozmiar buffer w znakach.count
Maksymalna liczba znaków do przechowywania w wersję UNICODE tej funkcji.format
Specyfikacja formatu.argptr
Wskaźnik do listy argumentów.locale
Ustawienia regionalne, aby użyć.
Wartość zwracana
_vsprintf_pi _vswprintf_p 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.
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.
Funkcje te różnią się od vsprintf_s i vswprintf_s tylko w tym obsługują one pozycyjne parametrów.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.
Jeśli buffer lub format parametry są wskaźniki wartości NULL, jeśli liczba jest równa zero, lub jeśli ciąg formatu zawiera nieprawidłowe znaki formatowania, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje zwracają wartość -1 i errno do EINVAL.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_vstprintf_p |
_vsprintf_p |
_vsprintf_p |
_vswprintf_p |
_vstprintf_p_l |
_vsprintf_p_l |
_vsprintf_p_l |
_vswprintf_p_l |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
Opcjonalna nagłówki |
---|---|---|
_vsprintf_p, _vsprintf_p_l |
<stdio.h> i <stdarg.h> |
<varargs.h> * |
_vswprintf_p, _vswprintf_p_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_p.c
// This program uses vsprintf_p to write to a buffer.
// The size of the buffer is determined by _vscprintf_p.
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
void example( char * format, ... )
{
va_list args;
int len;
char *buffer = NULL;
va_start( args, format );
// _vscprintf doesn't count the
// null terminating string so we add 1.
len = _vscprintf_p( format, args ) + 1;
// Allocate memory for our buffer
buffer = (char*)malloc( len * sizeof(char) );
if (buffer)
{
_vsprintf_p( buffer, len, format, args );
puts( buffer );
free( buffer );
}
}
int main( void )
{
// First example
example( "%2$d %1$c %3$d", '<', 123, 456 );
// Second example
example( "%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