Compartilhar via


_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

sistema::String::Format

Consulte também

Referência

Fluxo de E/S

Funções vprintf

Campos de especificação de formato: Funções de printf e wprintf

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg va_end, va_start