Partilhar via


_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l

Retorna o número de caracteres na cadeia de caracteres formatada usando um ponteiro para uma lista de argumentos.

Sintaxe

int _vscprintf(
   const char *format,
   va_list argptr
);
int _vscprintf_l(
   const char *format,
   _locale_t locale,
   va_list argptr
);
int _vscwprintf(
   const wchar_t *format,
   va_list argptr
);
int _vscwprintf_l(
   const wchar_t *format,
   _locale_t locale,
   va_list argptr
);

Parâmetros

format
Cadeia de caracteres de controle de formato.

argptr
Ponteiro para a lista de argumentos.

locale
A localidade a ser usada.

Para obter mais informações, consulte Sintaxe de especificação de formato.

Valor de retorno

_vscprintf retorna o número de caracteres que seriam gerados se a cadeia de caracteres apontada pela lista de argumentos fosse impressa ou enviada para um arquivo ou buffer usando os códigos de formatação especificados. O valor retornado não inclui o caractere nulo de terminação. _vscwprintf executa a mesma função para caracteres largos.

As versões dessas funções com o sufixo _l são idênticas, exceto que elas usam o parâmetro locale passado em vez da localidade thread atual.

Se format for um ponteiro nulo, o manipulador de parâmetros inválido será invocado, conforme descrito em de validação de parâmetros. Se a execução for permitida para continuar, as funções retornam -1 e definem errno como EINVAL.

Comentários

Valor de retorno é o tamanho dos dados formatados. Se a função tiver um buffer char, o tamanho será em bytes. Se a função tiver um buffer wchar_t, o tamanho especifica o número de palavras de 16 bits. Caracteres referem-se a char caracteres para funções que usam um buffer de char e a wchar_t caracteres para funções que usam um buffer wchar_t.

Cada argument (se houver) é convertido de acordo com a especificação de formato correspondente em format. O formato consiste em caracteres comuns e tem a mesma forma e função que o argumento format para printf.

Importante

Certifique-se de que, se format for uma cadeia de caracteres definida pelo usuário, ela será terminada nula e terá o número e o tipo de parâmetros corretos. Para obter mais informações, consulte Evitando saturações de buffer.

A partir do Windows 10 versão 2004 (build 19041), a família printf de funções imprime números de ponto flutuante exatamente representáveis de acordo com as regras IEEE 754 para arredondamento. Em versões anteriores do Windows, números de ponto flutuante exatamente representáveis terminando em '5' sempre arredondavam para cima. IEEE 754 afirma que eles devem arredondar para o dígito par mais próximo (também conhecido como "Arredondamento do Banqueiro"). Por exemplo, tanto printf("%1.0f", 1.5) quanto printf("%1.0f", 2.5) devem arredondar para 2. Anteriormente, 1,5 arredondava para 2 e 2,5 arredondava para 3. Esta alteração afeta apenas números exatamente representáveis. Por exemplo, 2.35 (que, quando representado na memória, está mais próximo de 2.35000000000000008) continua a arredondar 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 escolhia FE_TONEAREST comportamento. Essa alteração afeta apenas os programas criados usando o Visual Studio 2019 versão 16.2 e posterior. Para usar o comportamento de arredondamento de ponto flutuante herdado, vincule-se a legacy_stdio_float_rounding.obj.

Mapeamentos de rotina de texto genérico

TCHAR. Rotina H _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_vsctprintf _vscprintf _vscprintf _vscwprintf
_vsctprintf_l _vscprintf_l _vscprintf_l _vscwprintf_l

Requerimentos

Rotina Cabeçalho obrigatório
_vscprintf, _vscprintf_l <stdio.h>
_vscwprintf, _vscwprintf_l <stdio.h> ou <wchar.h>

Para obter mais informações sobre compatibilidade, consulte de compatibilidade .

Exemplo

Veja o exemplo para vsprintf.

Ver também

de E/S de fluxo
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
scanf, _scanf_l, wscanf, _wscanf_l
sscanf, _sscanf_l, swscanf, _swscanf_l
vprintf funções