scanf, _scanf_l, wscanf, _wscanf_l

Ler dados do fluxo de entrada padrão em formato.Versões mais seguras desses função estão disponível; 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
    Seqüência de caracteres de controle de formato.

  • argument
    Argumentos opcionais.

  • locale
    A localidade para usar.

Valor de retorno

Retorna o número de campos convertido com êxito e atribuídos; o valor retornado não inclui campos que foram lidos, mas não atribuídos.Um valor retornado 0 indica que nenhum campo foi atribuído.

If format é um NULL ponteiro, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções retornam EOF e conjunto errno para EINVAL.

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

Comentários

The scanffunção lê os dados do fluxo de entrada padrão stdine grava os dados no local fornecido pelo argument. Cada argument deve ser um ponteiro para uma variável de tipo que corresponde a um especificador de tipo em format. Se copiar ocorre entre cadeias de caracteres que se sobrepõem, o comportamento é indefinido.

Observação de segurança:

Ao ler uma seqüência de caracteres com scanf, sempre especificar uma largura para o %s Formatar (por exemplo, "%32s" em vez de "%s"); caso contrário, a entrada formatada incorretamente pode com com facilidade causar uma saturação de buffer. Como alternativa, considere o uso de scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l ou fgets.

wscanf é uma versão de caractere largo da scanf; o format argumento para wscanf é uma seqüência de caracteres largos. wscanf e scanf tenham comportamento idêntico se o fluxo é aberto no modo ANSI. scanf atualmente não oferece suporte a entrada de um fluxo UNICODE.

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

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

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

Requisitos

Rotina

Cabeçalho necessário

scanf, _scanf_l

<stdio.h>

wscanf, _wscanf_l

<stdio.h> ou <wchar.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

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);
}

71 98.6 h z Byte characters 36 92.3 y n Wide characters

The number of fields input is 6 The contents are: 71 98.599998 h z Byte characters The number of fields input is 6 The contents are: 36 92.300003 y n Wide characters

Equivalente do NET Framework

Consulte também

Referência

Suporte de ponto flutuante

Fluxo de E/S

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