_cscanf_s
, _cscanf_s_l
, _cwscanf_s
, _cwscanf_s_l
Lê os dados formatados do console. Essas versões mais seguras do , _cscanf_l
, _cwscanf
, _cwscanf_l
têm aprimoramentos de_cscanf
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 _cscanf_s(
const char *format [,
argument] ...
);
int _cscanf_s_l(
const char *format,
_locale_t locale [,
argument] ...
);
int _cwscanf_s(
const wchar_t *format [,
argument] ...
);
int _cwscanf_s_l(
const wchar_t *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 campos que foram convertidos e atribuídos com êxito. O valor retornado não inclui campos que foram lidos, mas não atribuídos. O valor retornado é EOF
para uma tentativa de leitura no final do arquivo. An EOF
também pode ser retornado quando a entrada do teclado é redirecionada para o nível de linha de comando do sistema operacional. Um valor retornado de zero significa que nenhum campo foi atribuído.
Essas funções validam seus parâmetros. Se format
for um ponteiro nulo, essas funções invocarão o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, essas funções retornarão EOF
e errno
serão definidas como EINVAL
.
Comentários
A função _cscanf_s
lê os dados diretamente no console nos locais fornecidos por argument
. A _getche
função é usada para ler caracteres. Cada parâmetro opcional deve ser um ponteiro para uma variável com um tipo que corresponde a um especificador de tipo em format
. O formato controla a interpretação dos campos de entrada e tem a mesma forma e função que o format
parâmetro para a scanf_s
função. Embora _cscanf_s
normalmente ecoe o caractere de entrada, ele não o fará se a última chamada tiver sido para _ungetch
.
Como outras versões seguras de funções na scanf
família, _cscanf_s
e _cwscanf_s
exigem argumentos de tamanho para os caracteres de campo de tipo c, C, s, S e [. Para obter mais informações, consulte Especificação de largura scanf.
Observação
O parâmetro de tamanho é do tipo unsigned
, não size_t
.
As versões dessas funções com o sufixo _l
são idênticas, com a exceção de usarem o parâmetro de localidade passado, em vez da localidade do thread atual.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H | _UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscanf_s |
_cscanf_s |
_cscanf_s |
_cwscanf_s |
_tcscanf_s_l |
_cscanf_s_l |
_cscanf_s_l |
_cwscanf_s_l |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_cscanf_s , _cscanf_s_l |
<conio.h> |
_cwscanf_s , _cwscanf_s_l |
<conio.h> ou <wchar.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Bibliotecas
Todas as versões das bibliotecas em tempo de execução C.
Exemplo
// crt_cscanf_s.c
// compile with: /c
/* This program prompts for a string
* and uses _cscanf_s to read in the response.
* Then _cscanf_s returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, n[3];
int i;
result = _cscanf_s( "%i %i %i", &n[0], &n[1], &n[2] );
_cprintf_s( "\r\nYou entered " );
for( i=0; i<result; i++ )
_cprintf_s( "%i ", n[i] );
_cprintf_s( "\r\n" );
}
1 2 3
You entered 1 2 3
Confira também
E/S de console e porta
_cprintf
, _cprintf_l
, _cwprintf
, _cwprintf_l
fscanf_s
, _fscanf_s_l
, fwscanf_s
, _fwscanf_s_l
scanf_s
, _scanf_s_l
, wscanf_s
, _wscanf_s_l
sscanf_s
, _sscanf_s_l
, swscanf_s
, _swscanf_s_l