_cprintf_p
, _cprintf_p_l
, _cwprintf_p
, _cwprintf_p_l
Formata e imprime no console, além de dar suporte a parâmetros posicionais na cadeia de formato.
Importante
Esta API não pode ser usada em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.
Sintaxe
int _cprintf_p(
const char * format [,
argument] ...
);
int _cprintf_p_l(
const char * format,
_locale_t locale [,
argument] ...
);
int _cwprintf_p(
const wchar * format [,
argument] ...
);
int _cwprintf_p_l(
const wchar * format,
_locale_t locale [,
argument] ...
);
Parâmetros
format
Cadeia de caracteres de controle de formato.
argument
Parâmetros opcionais.
locale
A localidade a ser usada.
Valor retornado
O número de caracteres impressos ou um valor negativo se ocorrer um erro.
Comentários
Essas funções formatam e imprimem uma série de caracteres e valores diretamente no console, usando as funções _putch
e _putwch
para gerar caracteres. Cada argument
(se houver) é convertido e gerado de acordo com a especificação de formato correspondente em format
. O formato tem a mesma forma e função que o format
parâmetro da printf_p
função. A diferença entre _cprintf_p
e cprintf_s
é que _cprintf_p
dá suporte a parâmetros posicionais, o que permite especificar a ordem em que os argumentos são usados na cadeia de formato. Para obter mais informações, consulte Parâmetros posicionais printf_p.
Ao contrário das funções _cprintf_p
_cwprintf_p
, printf_p
, e sprintf_p
não convertem caracteres de alimentação de linha em combinações de alimentação de linha de retorno de carro (CR-LF) durante a fprintf_p
saída. Uma distinção importante é que _cwprintf_p
exibe caracteres Unicode quando usado no Windows NT. Ao contrário de _cprintf_p
, _cwprintf_p
usa as configurações de localidade do console atual.
As versões dessas funções com o sufixo _l
são idênticas, com a exceção de que usam o parâmetro de localidade passado em vez da localidade atual.
Além disso, como _cprintf_s
e _cwprintf_s
, eles validam o ponteiro de entrada e a cadeia de formato. Se format
ou argument
are NULL
, ou da cadeia de caracteres de formato contiver caracteres de formatação inválidos, essas funções invocarão o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções retornarão -1 e definirão errno
como EINVAL
.
Importante
Verifique se format
não é uma cadeia de caracteres definida pelo usuário.
Começando pelo Windows 10 versão 2004 (build 19041), a família de funções printf
imprime números de ponto flutuante exatamente representáveis de acordo com as regras do IEEE 754 para arredondamento. Em versões anteriores do Windows, números de ponto flutuante que pudessem ser representados com exatidão e que terminassem em '5' eram sempre arredondados para cima. O IEEE 754 afirma que eles precisam arredondar para o dígito par mais próximo (também conhecido como "arredondamento bancário"). Por exemplo, ambos printf("%1.0f", 1.5)
e printf("%1.0f", 2.5)
devem ser arredondados para 2. Anteriormente, 1,5 seria arredondado para 2 e 2,5 para 3. Essa alteração afeta apenas números que possam ser representados com exatidão. Por exemplo, 2,35 (que, quando representado na memória, está mais próximo de 2,35000000000000008) continua arredondando 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 o comportamento FE_TONEAREST
. Essa alteração afeta apenas os programas criados usando o Visual Studio 2019 versão 16.2 e posteriores. Para usar o comportamento de arredondamento de ponto flutuante herdado, vincule-o a legacy_stdio_float_rounding.obj
.
Mapeamentos de rotina de texto genérico
Rotina Tchar.h | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcprintf_p |
_cprintf_p |
_cprintf_p |
_cwprintf_p |
_tcprintf_p_l |
_cprintf_p_l |
_cprintf_p_l |
_cwprintf_p_l |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_cprintf_p , _cprintf_p_l |
<conio.h> |
_cwprintf_p , _cwprintf_p_l |
<conio.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_cprintf_p.c
// This program displays some variables to the console
// using the _cprintf_p function.
#include <conio.h>
int main( void )
{
int i = -16,
h = 29;
unsigned u = 62511;
char c = 'A';
char s[] = "Test";
// Note that console output does not translate
// \n as standard output does. Use \r\n instead.
_cprintf_p( "%2$d %1$.4x %3$u %4$c %5$s\r\n",
h, i, u, c, s );
}
-16 001d 62511 A Test
Confira também
E/S de console e porta
_cscanf
, _cscanf_l
, _cwscanf
, _cwscanf_l
_cscanf_s
, _cscanf_s_l
, _cwscanf_s
, _cwscanf_s_l
_fprintf_p
, _fprintf_p_l
, _fwprintf_p
, _fwprintf_p_l
fprintf_s
, _fprintf_s_l
, fwprintf_s
, _fwprintf_s_l
_printf_p
, _printf_p_l
, _wprintf_p
, _wprintf_p_l
printf_s
, _printf_s_l
, wprintf_s
, _wprintf_s_l
_sprintf_p
, _sprintf_p_l
, _swprintf_p
, _swprintf_p_l
_vfprintf_p
, _vfprintf_p_l
, _vfwprintf_p
, _vfwprintf_p_l
_cprintf_s
, _cprintf_s_l
, _cwprintf_s
, _cwprintf_s_l
Parâmetros posicionais printf_p
Sintaxe de especificação de formato: printf
e wprintf
funções