Funções vprintf

Cada uma das funções do vprintf usa um ponteiro para uma lista de argumentos e então formata e grava os dados determinados em um destino em particular. As funções diferem de várias maneiras: na validação de parâmetros, se as funções usam cadeias de caracteres de byte único ou largas, o destino de saída e o suporte para especificar os parâmetros de ordem são usados na cadeia de caracteres de formato.

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
vprintf, vwprintf
_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l
vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l
_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l
_vsnprintf, _vsnwprintfvsprintf, vswprintf
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Comentários

As funções vprintf são semelhantes às funções correspondentes, conforme listado na tabela a seguir. No entanto, cada função vprintf aceita um ponteiro para uma lista de argumentos, enquanto cada uma das funções equivalentes aceita uma lista de argumentos.

Essas funções formatam os dados de saída para destinos como os seguintes.

Função Função equivalente Destino de saída Validação de parâmetro Suporte a parâmetros posicionais
_vcprintf _cprintf console Verifique se há nulos. não
_vcwprintf _cwprintf console Verifique se há nulos. não
vfprintf fprintf stream Verifique se há nulos. não
vfprintf_p fprintf_p stream Verifique se há nulos e formato válido. sim
vfprintf_s fprintf_s stream Verifique se há nulos e formato válido. não
vfwprintf fwprintf stream Verifique se há nulos. não
vfwprintf_p fwprintf_p stream Verifique se há nulos e formato válido. sim
vfwprintf_s fwprintf_s stream Verifique se há nulos e formato válido. não
vprintf printf stdout Verifique se há nulos. não
vprintf_p printf_p stdout Verifique se há nulos e formato válido. sim
vprintf_s printf_s stdout Verifique se há nulos e formato válido. não
vwprintf wprintf stdout Verifique se há nulos. não
vwprintf_p wprintf_p stdout Verifique se há nulos e formato válido. sim
vwprintf_s wprintf_s stdout Verifique se há nulos e formato válido. não
vsprintf sprintf memória apontada por buffer Verifique se há nulos. não
vsprintf_p sprintf_p memória apontada por buffer Verifique se há nulos e formato válido. sim
vsprintf_s sprintf_s memória apontada por buffer Verifique se há nulos e formato válido. não
vswprintf swprintf memória apontada por buffer Verifique se há nulos. não
vswprintf_p swprintf_p memória apontada por buffer Verifique se há nulos e formato válido. sim
vswprintf_s swprintf_s memória apontada por buffer Verifique se há nulos e formato válido. não
_vscprintf _vscprintf memória apontada por buffer Verifique se há nulos. não
_vscwprintf _vscwprintf memória apontada por buffer Verifique se há nulos. não
_vsnprintf _snprintf memória apontada por buffer Verifique se há nulos. não
_vsnwprintf _snwprintf memória apontada por buffer Verifique se há nulos. não

O argumento argptr tem o tipo va_list, definido em VARARGS.H e STDARG.H. A argptr variável deve ser inicializada por va_start e pode ser reinicializada por chamadas subsequentesva_arg; argptr em seguida, aponta para o início de uma lista de argumentos que são convertidos e transmitidos para saída de acordo com as format especificações correspondentes no argumento. format tem a mesma forma e função que o format argumento para printf. Nenhuma dessas funções invoca va_end. Para obter uma descrição mais completa de cada vprintf funcionam, consulte a descrição de sua função equivalente, conforme listado na tabela anterior.

_vsnprintf difere de vsprintf que não grava mais do que count bytes em buffer.

As versões dessas funções com o infixo w no nome são versões de caracteres largos das funções correspondentes sem o infixo w ; em cada uma dessas funções de caracteres largos, buffer e format são cadeias de caracteres largos. Caso contrário, cada função de caractere largo se comporta de forma idêntica à sua função equivalente do SBCS.

As versões dessas funções com _s sufixos e _p são as versões mais seguras. Essas versões validam as cadeias de caracteres de formato. Eles gerarão uma exceção se a cadeia de caracteres de formato não estiver bem formada (por exemplo, se caracteres de formatação inválidos forem usados).

As versões dessas funções com o _p sufixo permitem especificar a ordem na qual os argumentos fornecidos são substituídos na cadeia de caracteres de formato. Para obter mais informações, consulte Parâmetros posicionais printf_p.

Para vsprintf, vswprintf, _vsnprintf e _vsnwprintf, se a cópia ocorrer entre cadeias de caracteres que se sobrepõem, o comportamento será indefinido.

Importante

Verifique se format não é uma cadeia de caracteres definida pelo usuário. Para obter mais informações, confira Como evitar sobrecargas de buffer. Se estiver usando as versões seguras dessas funções (sufixos ou _s _p ou), uma cadeia de caracteres de formato fornecida pelo usuário poderá disparar uma exceção de parâmetro inválido se a cadeia de caracteres fornecida pelo usuário contiver caracteres de formatação inválidos.

Confira também

E/S de fluxo
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
va_arg, va_copy, va_end, va_start