Compartilhar via


Funções vprintf

Cada uma das funções de vprintf usa um ponteiro para uma lista de argumentos, então em formatos e grava os dados dados para um destino específico. As funções difere na validação de parâmetro executada, se as funções usam largura ou cadeias de caracteres de um byte, o destino de saída, e o suporte para especificar a ordem em que os parâmetros 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

vsprintf, vswprintf

_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l

_vsnprintf, _vsnwprintf

Comentários

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

Essas funções formatar dados para saída aos destinos da seguinte maneira.

Função

Função de contraparte

Destino de saída

Validação de parâmetro

Suporte de parâmetro posicional

_vcprintf

_cprintf

console

Verificação do zero.

não

_vcwprintf

_cwprintf

console

Verificação do zero.

não

vfprintf

fprintf

Fluxo

Verificação do zero.

não

vfprintf_p

fprintf_p

Fluxo

Verificação para o formato nulo e é válida.

sim

vfprintf_s

fprintf_s

Fluxo

Verificação para o formato nulo e é válida.

não

vfwprintf

fwprintf

Fluxo

Verificação do zero.

não

vfwprintf_p

fwprintf_p

Fluxo

Verificação para o formato nulo e é válida.

sim

vfwprintf_s

fwprintf_s

Fluxo

Verificação para o formato nulo e é válida.

não

vprintf

printf

Stdout

Verificação do zero.

não

vprintf_p

printf_p

Stdout

Verificação para o formato nulo e é válida.

sim

vprintf_s

printf_s

Stdout

Verificação para o formato nulo e é válida.

não

vwprintf

wprintf

Stdout

Verificação do zero.

não

vwprintf_p

wprintf_p

Stdout

Verificação para o formato nulo e é válida.

sim

vwprintf_s

wprintf_s

Stdout

Verificação para o formato nulo e é válida.

não

vsprintf

sprintf

memória apontada pelo buffer

Verificação do zero.

não

vsprintf_p

sprintf_p

memória apontada pelo buffer

Verificação para o formato nulo e é válida.

sim

vsprintf_s

sprintf_s

memória apontada pelo buffer

Verificação para o formato nulo e é válida.

não

vswprintf

swprintf

memória apontada pelo buffer

Verificação do zero.

não

vswprintf_p

swprintf_p

memória apontada pelo buffer

Verificação para o formato nulo e é válida.

sim

vswprintf_s

swprintf_s

memória apontada pelo buffer

Verificação para o formato nulo e é válida.

não

_vscprintf

_vscprintf

memória apontada pelo buffer

Verificação do zero.

não

_vscwprintf

_vscwprintf

memória apontada pelo buffer

Verificação do zero.

não

_vsnprintf

_snprintf

memória apontada pelo buffer

Verificação do zero.

não

_vsnwprintf

_snwprintf

memória apontada pelo buffer

Verificação do zero.

não

O argumento de argptr tem o tipo va_list, que é definido em VARARGS.H e em. STDARG.H. A variável de argptr deve ser inicializado por va_start, e pode ser reinicializado por chamadas subsequentes de va_arg ; pontos de argptr no início de uma lista de argumentos que são convertidos e passados para saída de acordo com as especificações correspondentes no argumento de formato . o formato tem o mesmo formulário e função que o argumento de formato para printf. Nenhuma dessas funções invoca va_end. Para obter uma descrição mais completo de cada função de vprintf , consulte a descrição de suas contrapartes funcionar como listado na tabela acima.

_vsnprintf difere de vsprintf que grava não mais do que bytes de contagem no buffer.

As versões dessas funções com o infixo de w no nome são versões ampla de caracteres das funções correspondentes sem o infixo de w ; em cada uma dessas funções ampla de caracteres, o buffer e o formato são cadeias de caracteres de ampla caractere. Se não, cada função ampla de caracteres se comporta idêntica à função de contraparte de SBCS.

As versões dessas funções com _s e sufixos do _p são mais seguros versões. Essas versões validará as cadeias de formato e gerarão uma exceção se a cadeia de caracteres de formato não é boa formada (por exemplo, se os caracteres de formatação inválidos são usados).

As versões dessas funções com o sufixo de _p fornecem a capacidade de especificar a ordem em que 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 copiar ocorre entre as cadeias de caracteres que sobrepõem, o comportamento será indefinido.

Observação de segurançaObservação de segurança

Verifique se o formato não seja uma cadeia de caracteres definida pelo usuário.Para obter mais informações, consulte Evitando saturações de buffer.Se usar as versões seguro dessas funções (sufixos de _s ou de _p ), uma cadeia de formato fornecida pelo usuário pode disparar uma exceção inválido do parâmetro se a cadeia de caracteres fornecida por contém caracteres de formatação inválidos.

Consulte também

Referência

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