_cscanf_s
, _cscanf_s_l
, _cwscanf_s
, _cwscanf_s_l
Lê os dados formatados do console. Essas versões mais seguras do , , , têm aprimoramentos de segurança, _cscanf_l
_cwscanf_l
_cwscanf
conforme descrito em Recursos de _cscanf
segurança na 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.
Retornar valor
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. Um 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 de retorno 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âmetros 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 faz se a última chamada foi para _ungetch
.
Como outras versões seguras de funções na scanf
família, e exigem argumentos de tamanho para os caracteres de campo de tipo c, C, s, _cscanf_s
S e _cwscanf_s
[. 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de