_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l

Grava a saída formatada usando um ponteiro para uma lista de argumentos e permite a especificação da ordem na qual os argumentos são usados.

Sintaxe

int _vprintf_p(
   const char *format,
   va_list argptr
);
int _vprintf_p_l(
   const char *format,
   _locale_t locale,
   va_list argptr
);
int _vwprintf_p(
   const wchar_t *format,
   va_list argptr
);
int _vwprintf_p_l(
   const wchar_t *format,
   _locale_t locale,
   va_list argptr
);

Parâmetros

format
Especificação de formato.

argptr
Ponteiro para a lista de argumentos.

locale
A localidade a ser usada.

Para obter mais informações, consulte Especificações de formato.

Valor Retornado

_vprintf_p e _vwprintf_p retornam o número de caracteres gravados, 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 os dados determinados em stdout. Essas funções diferem de vprintf_s e vwprintf_s apenas porque elas suportam a capacidade de especificar a ordem na qual os argumentos são usados. Para obter mais informações, consulte Parâmetros posicionais printf_p.

_vwprintf_p é a versão de caractere largo do _vprintf_p; as duas funções se comportam de forma idêntica se o fluxo é aberto no modo ANSI. _vprintf_p atualmente não dá suporte à saída em um fluxo UNICODE.

As versões dessas funções com o sufixo _l são idênticas, exceto pelo fato de usarem o parâmetro de localidade passado em vez da localidade do thread atual.

Importante

Verifique se format não é uma cadeia de caracteres definida pelo usuário. Para obter mais informações, consulte Avoiding Buffer Overruns (Evitando estouros de buffer). A partir da Windows 10 2004 (build 19041), printf a família de funções imprime números de ponto flutuante exatamente representáveis de acordo com as regras do IEEE 754 para arredondamento. Nas versões anteriores do Windows, números de ponto flutuante exatamente representáveis terminando em '5' sempre arredondam para cima. O IEEE 754 afirma que eles devem arredondar para o dígito de mesmo valor mais próximo (também conhecido como "Arredondamento do Jogo"). Por exemplo, e printf("%1.0f", 1.5) devem printf("%1.0f", 2.5) arredondar para 2. Anteriormente, 1,5 arredondava para 2 e 2,5 arredondava para 3. Essa alteração afeta apenas números exatamente representáveis. Por exemplo, 2,35 (que, quando representado na memória, é mais próximo de 2,3500000000000008) continua arredondando para 2,4. O arredondamento feito por essas funções agora também respeita o modo de arredondamento de ponto flutuante definido por fesetround. Anteriormente, o arredondamento sempre escolhe o FE_TONEAREST comportamento. Essa alteração afeta apenas os programas criado usando Visual Studio 2019 versão 16.2 e posteriores. Para usar o comportamento de arredondamento de ponto flutuante herddo, vincule com 'legacy_stdio_float_rounding.obj'.

Se format for um ponteiro nulo ou se a cadeia de caracteres de formato contiver caracteres de formatação inválidos, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, as funções retornarão -1 e definirão errno como EINVAL.

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H & _UNICODE _MBCS não definido _MBCS definido _UNICODE definido
_vtprintf_p _vprintf_p _vprintf_p _vwprintf_p
_vtprintf_p_l _vprintf_p_l _vprintf_p_l _vwprintf_p_l

Requisitos

Rotina Cabeçalho necessário Cabeçalhos opcionais
_vprintf_p, _vprintf_p_l <stdio.h> e <stdarg.h> <varargs.h>*
_vwprintf_p, _vwprintf_p_l <stdio.h> ou <wchar.h> e <stdarg.h> <varargs.h>*

* Necessário para compatibilidade UNIX V.

Não há suporte para o console em Plataforma Universal do Windows (UWP). Os alças de fluxo padrão associados ao console, stdin, stdout e stderr devem ser redirecionados antes que as funções em tempo de run-time C possam usá-las em aplicativos UWP. Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Confira também

E/S de fluxo
Funções vprintf
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l
_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l
vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l
va_arg, va_copy, va_end, va_start
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l
_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l
printf_p parâmetros posicionais