_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
Scrivere l'output formattato utilizzando un puntatore a un elenco di argomenti, con la possibilità di specificare l'ordine in cui gli argomenti sono utilizzati.
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
);
Parametri
buffer
Percorso di archiviazione per l'output.sizeInBytes
Dimensione del buffer in caratteri.count
Numero massimo di caratteri da archiviare, nella versione di UNICODE della funzione.format
Specifica di formato,argptr
Puntatore all'elenco di argomenti.locale
Le impostazioni locali da utilizzare.
Valore restituito
_vsprintf_p e _vswprintf_p restituiscono il numero di caratteri scritti, escluso il carattere di terminazione null, o un valore negativo se un errore di output viene visualizzato.
Note
Ognuna di queste funzioni accetta un puntatore ad un elenco di argomenti, quindi formatta e scrive i dati specificati nella locazione di memoria indicata da buffer.
Queste funzioni differiscono da vsprintf_s e da vswprintf_s solo nel fatto che supportano i parametri posizionali. Per ulteriori informazioni, vedere Parametri posizionali printf_p.
Le versioni di queste funzioni con il suffisso _l sono identiche ad eccezione che utilizzano il parametro delle impostazioni locali passato in ingresso invece di utilizzare quelle del thread corrente.
Se i parametri format o buffer sono puntatori null, se il conteggio è zero, o se la stringa di formato contiene caratteri di formattazione non validi, il gestore di parametro non valido viene richiamato, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce -1 e imposta errno a EINVAL.
Mapping di routine a Testo generico
Routine TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_vstprintf_p |
_vsprintf_p |
_vsprintf_p |
_vswprintf_p |
_vstprintf_p_l |
_vsprintf_p_l |
_vsprintf_p_l |
_vswprintf_p_l |
Requisiti
Routine |
Intestazione obbligatoria |
Intestazioni facoltative |
---|---|---|
_vsprintf_p, _vsprintf_p_l |
<stdio.h> e <stdarg.h> |
<varargs.h>* |
_vswprintf_p, _vswprintf_p_l |
<stdio.h> o <wchar.h> e <stdarg.h> |
<varargs.h>* |
* Necessario per la compatibilità con UNIX V.
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
// 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" );
}
Equivalente .NET Framework
Vedere anche
Riferimenti
Sintassi per la specifica del formato: funzioni printf wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l