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
, _vsnwprintf
vsprintf
, 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