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 do parâmetro, se as funções recebem cadeias de caracteres de byte único ou largo, 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 subsequentes va_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 especificações correspondentes no format
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
em que ele grava não mais do que count
bytes em buffer
.
As versões dessas funções com o infixo w no nome são versões de caractere largo das funções correspondentes sem o infixo w; em cada uma dessas funções de caractere largo e format
são cadeias buffer
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, consulte Evitando estouros de buffer. Se estiver usando as versões seguras dessas funções (sufixos _s
ou _p
), uma cadeia de caracteres de formato fornecida pelo usuário poderá disparar uma exceção de parâmetro inválida 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