scanf, _scanf_l, wscanf, _wscanf_l

Dados formatados de leitura de fluxo de entrada padrão.Versões mais seguros desses função estão disponíveis; consulte scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

int scanf( const char *format [, argument]... ); int _scanf_l( const char *format, locale_t locale [, argument]... ); int wscanf( const wchar_t *format [, argument]... ); int _wscanf_l( const wchar_t *format, locale_t locale [, argument]... );

Parâmetros

  • format
    Cadeia de caracteres de formato do controle.

  • argument
    Argumentos opcionais.

  • locale
    A localidade a ser usada.

Valor de retorno

Retorna o número de campos com êxito convertidos e atribuído; o valor de retorno não inclui os campos que foram lidos mas não atribuído.Um valor de retorno de 0 indica que nenhuma propriedade esteve atribuído.

Se format é um ponteiro de NULL , o manipulador inválido do parâmetro é invocado, como descrito em Validação de parâmetro.Se a execução é permitida continuar, essas funções EOF de retorno e errno defina a EINVAL.

Para obter informações sobre esses e outros códigos de erro, consulte _doserrno, errno, _sys_errlist, e _sys_nerr.

Comentários

A função de scanf ler dados de fluxo de entrada padrão stdin e grava os dados na localidade determinada por argument.Cada argument deve ser um ponteiro a uma variável de um tipo que corresponde a um especificador de tipo em format.Se copiar ocorre entre as cadeias de caracteres que sobrepostos, o comportamento é indefinido.

Observação de segurançaObservação de segurança

Ao ler uma cadeia de caracteres com scanf, sempre especificar uma largura para o formato de %s (por exemplo, "%32s" em vez de "%s"); caso contrário, a entrada incorretamente formatada pode facilmente causar um estouro de buffer.Como alternativa, considere usar scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l ou fgets.

wscanf é uma versão de largo- caractere de scanf; o argumento de format a wscanf é uma cadeia de caracteres de largo- caractere.wscanf e scanf se comportam de forma idêntica se o fluxo é aberta no modo ANSI.scanf não tem suporte para a entrada de um fluxo de UNICODE.

As versões dessas funções com o sufixo de _l são idênticas exceto que usam o parâmetro de localidade passado em vez de localidade atual da thread.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_MBCS definido

_UNICODE definido

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Para obter mais informações, consulte Formatar campos de especificação — funções de scanf e funções de wscanf.

Requisitos

Rotina

Cabeçalho necessário

scanf, _scanf_l

<stdio.h>

wscanf, _wscanf_l

<stdio.h> ou <wchar.h>

O console não é suportado em aplicativos de Windows Store .Identificadores padrões de fluxo associadas ao console, stdin, stdout, e stderr, devem ser redirecionada antes que as funções de tempo de execução das C pode usar em aplicativos de Windows Store .Para informações extras de compatibilidade Compatibilidade na introdução, consulte.

Exemplo

// crt_scanf.c
// compile with: /W3
 /* This program uses the scanf and wscanf functions
  * to read formatted input.
  */

#include <stdio.h>

int main( void )
{
   int   i, result;
   float fp;
   char  c, s[81];
   wchar_t wc, ws[81];
   result = scanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws ); // C4996
   // Note: scanf and wscanf are deprecated; consider using scanf_s and wscanf_s
   printf( "The number of fields input is %d\n", result );
   printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
   result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws ); // C4996
   wprintf( L"The number of fields input is %d\n", result );
   wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
  

Equivalência do .NET Framework

Consulte também

Referência

Suporte de ponto flutuante

Fluxo de i/O

Localidade

fscanf, _fscanf_l, fwscanf, _fwscanf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

sscanf, _sscanf_l, swscanf, _swscanf_l