_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 _cscanfseguranç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 EOFe 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