_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
Grave saída formatada usando um ponteiro para uma lista de argumentos, com a capacidade de especificar a ordem em que os argumentos são usados.
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
);
Parâmetros
buffer
Local de armazenamento para saída.sizeInBytes
dimensionar de buffer em caracteres.count
Número máximo de caracteres para armazenar, na versão UNICODE dessa função.format
Especificação de formato.argptr
Ponteiro para a lista de argumentos.locale
A localidade para usar.
Valor de retorno
_vsprintf_p e _vswprintf_p Retorna o número de caracteres escritos, não incluindo o caractere nulo de terminação ou um valor negativo se ocorrer um erro de saída.
Comentários
Cada uma dessas funções leva um ponteiro para uma lista de argumentos e, em seguida, formata e grava dados fornecidos a memória apontada por buffer.
Essas funções diferem o vsprintf_s e vswprintf_s somente no que eles oferecem suporte a parâmetros posicionais. For more information, see printf_p posicional parâmetros.
As versões dessas funções com o _l sufixo são idênticas exceto que usarem o parâmetro de localidade passado em vez da localidade do thread corrente.
Se o buffer ou format parâmetros são ponteiros nulo, se contagem for zero, ou se a seqüência de caracteres de formato contém caracteres inválidos de formatação, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, as funções retornam -1 e conjunto errno para EINVAL.
Mapeamentos de rotina de texto genérica
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_vstprintf_p |
_vsprintf_p |
_vsprintf_p |
_vswprintf_p |
_vstprintf_p_l |
_vsprintf_p_l |
_vsprintf_p_l |
_vswprintf_p_l |
Requisitos
Rotina |
Cabeçalho necessário |
Cabeçalhos opcionais |
---|---|---|
_vsprintf_p, _vsprintf_p_l |
<stdio.h> e <stdarg.h> |
<varargs.h> * |
_vswprintf_p, _vswprintf_p_l |
<stdio.h> ou <wchar.h> e <stdarg.h> |
<varargs.h> * |
* Necessário para compatibilidade UNIX V.
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Exemplo
// 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" );
}
123 < 456 This is a string
Equivalente do NET Framework
Consulte também
Referência
Campos de especificação de formato: Funções de printf e wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l