_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
Lê dados formatados a partir do console. Essas versões mais seguras de _cscanf, _cscanf_l, _cwscanf, _cwscanf_l têm aprimoramentos de segurança, como descrito em Recursos de segurança no CRT.
Importante
Esta API não pode ser usada em aplicativos que executam no Tempo de Execução do Windows.Para obter mais informações, consulte Funções CRT sem suporte pelo /ZW.
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 de retorno
O número de campos que foram convertidos e atribuídos com êxito. O valor de retorno não inclui os campos que foram lidos, mas não atribuídos. O valor de retorno é EOF para uma tentativa de leitura no fim do arquivo. Isso pode ocorrer quando a entrada do teclado é redirecionada no nível de linha de comando do sistema operacional. Um valor de retorno 0 significa que nenhum campo foi atribuído.
Essas funções validam seus parâmetros. Se format for um ponteiro nulo, essas funções chamarão o manipulador de parâmetro inválido, como descrito em Validação do parâmetro. Se a execução puder continuar, essas funções retornarão EOF e errnoserá definido como EINVAL.
Comentários
A função de _cscanf_s lê os dados diretamente do console em locais fornecidos por argument. A função _getche é 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 o mesmo formulário e função do parâmetro format para a função de scanf_s. Embora o _cscanf_s ecoe normalmente o caractere de entrada, ele não faz isso se a última chamada foi para _ungetch.
Assim como outras versões seguras das funções na família de scanf, _cscanf_s e _cswscanf_s exigem argumentos de tamanho para os caracteres c, C, s, S, e [ do campo de tipo. Para obter mais informações, consulte Especificação de largura scanf Width.
Dica
O parâmetro de tamanho é do tipo unsigned, e não size_t.
As versões dessas funções com o sufixo _l são idênticas, exceto que usam o parâmetro de localidade passado em vez da localidade de thread atual.
Mapeamentos da 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 mais 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" );
}
Entrada
1 2 3
Saída
You entered 1 2 3
Consulte também
Referência
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l