Compartilhar via


_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l

Formata e imprime no console. Essas versões do , _cprintf_l, _cwprintf, _cwprintf_l têm aprimoramentos de_cprintf segurança, conforme descrito em Recursos de segurança no CRT.

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_s(
   const char * format [,
   argument] ...
);
int _cprintf_s_l(
   const char * format,
   _locale_t locale [,
   argument] ...
);
int _cwprintf_s(
   const wchar * format [,
   argument] ...
);
int _cwprintf_s_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.

Comentários

Essas funções formatam e imprimem uma série de caracteres e valores diretamente no console, usando a função _putch (_putwch para _cwprintf_s) 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_s função. Ao contrário das funções _cprintf_s _cwprintf_s , printf_s, e sprintf_s 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_ssaída.

Uma distinção importante é que _cwprintf_s exibe caracteres Unicode quando usado no Windows NT. Ao contrário de _cprintf_s, _cwprintf_s usa a 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.

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'.

Como as versões não seguras (consulte _cprintf, _cprintf_l, _cwprintf, _cwprintf_l), essas funções validam seus parâmetros e invocam o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro, se format for um ponteiro nulo. Essas funções diferem das versões não seguras pelo fato da própria cadeia de formato também ser validada. Se houver algum especificador de formatação desconhecido ou mal formado, essas funções invocarão o manipulador de parâmetro inválido. Em todo caso, se a execução puder continuar, essas funções retornarão -1 e definirão errno como EINVAL.

Mapeamentos de rotina de texto genérico

Rotina Tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tcprintf_s _cprintf_s _cprintf_s _cwprintf_s
_tcprintf_s_l _cprintf_s_l _cprintf_s_l _cwprintf_s_l

Requisitos

Rotina Cabeçalho necessário
_cprintf_s, _cprintf_s_l <conio.h>
_cwprintf_s, _cwprintf_s_l <conio.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas

Todas as versões das bibliotecas em tempo de execução C.

Exemplo

// crt_cprintf_s.c
// compile with: /c
// This program displays some variables to the console.

#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_s( "%d  %.4x  %u  %c %s\r\n", i, h, u, c, s );
}
-16  001d  62511  A Test

Confira também

E/S de console e porta
_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l
printf_s, _printf_s_l, wprintf_s, _wprintf_s_l
sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
Sintaxe de especificação de formato: printf e wprintf funções