Campos de especificação de formato: scanf e wscanf funções

As informações aqui se aplicam a toda a scanf da família de funções, incluindo as versões seguras e descreve os símbolos usados para informar o scanf funciona como analisar o fluxo de entrada, como, por exemplo, o fluxo de entrada stdin para scanf, em valores que são inseridos em variáveis de programa.

Uma especificação de formato tem a seguinte forma:

%*] width [{h | l | ll | I64 | L}]type

O format argumento especifica a interpretação da entrada e pode conter um ou mais dos seguintes:

  • Caracteres de espaço em branco: em branco (' '); guia ('\t'); ou nova linha ('\n').Faz com que um caractere de espaço em branco scanf para ler, mas não armazenar todos os caracteres de espaço em branco consecutivos na entrada para o próximo caractere de espaço em non–white.Um caractere de espaço em branco no formato corresponde a qualquer número (incluindo o 0) e a combinação de caracteres de espaço em branco na entrada.

  • Caracteres de espaço em Non–white, exceto para o sinal de porcentagem (%).Faz com que um caractere de espaço de non–white scanf para ler, mas não armazenar um caractere de espaço de non–white correspondente.Se o próximo caractere no fluxo de entrada não corresponder, scanf termina.

  • Formate as especificações, introduzidas pelo sinal de porcentagem (%).Faz com que uma especificação de formato scanf para ler e converter caracteres na entrada em valores de um tipo especificado.O valor é atribuído a um argumento na lista de argumentos.

O formato é lido da esquerda para a direita.Espera-se caracteres fora de especificações de formato para coincidir com a seqüência de caracteres no fluxo de entrada; os caracteres correspondentes no fluxo de entrada são examinados, mas não armazenados.Se um caractere no fluxo de entrada entrar em conflito com a especificação de formato, scanf termina, e o caractere será deixado no fluxo de entrada, como se não tivesse sido lidos.

Quando a primeira especificação de formato é encontrada, o valor do primeiro campo de entrada é convertido de acordo com essa especificação e armazenado no local especificado pelo primeiro argument.A especificação de formato segunda faz com que o segundo campo de entrada ser convertida e armazenada na segunda argument, e assim por diante até o final da seqüência de caracteres de formato.

Um campo de entrada é definido como todos os caracteres até o primeiro caractere de espaço em branco (espaço, tabulação ou nova linha), ou até o primeiro caractere que não pode ser convertido de acordo com a especificação de formato, ou até que a largura do campo (se especificado) for atingido.Se houver muitos argumentos para ver as especificações determinados, argumentos extras são avaliados mas ignorados.Os resultados serão imprevisíveis se não há argumentos suficientes para a especificação de formato.

Cada campo da especificação do formato é um único caractere ou um número indicando uma opção de formato específico.O type caracteres, que aparece após o último campo formato opcional, que determina se o campo de entrada é interpretado como um caractere, uma seqüência de caracteres ou um número.

A especificação de formato mais simples contém apenas o sinal de porcentagem e um type caractere (por exemplo, %s).Se um sinal de porcentagem (%) é seguido por um caractere que tem nenhum significado como um caractere de controle de formato, o que os seguintes caracteres (até o próximo sinal de porcentagem) e caractere são tratados como uma simples seqüência de caracteres, ou seja, uma seqüência de caracteres deve coincidir com a entrada.Por exemplo, para especificar que um caractere de sinal de porcentagem é inserida, use %%.

Um asterisco (*) seguir o sinal de porcentagem suprime a atribuição do próximo campo de entrada, que é interpretado como um campo do tipo especificado.O campo é verificado, mas não armazenado.

As versões seguras (aqueles com o _s sufixo) da scanf família de funções exigem que um parâmetro de tamanho de buffer passadas imediatamente após cada parâmetro do tipo c, C, s, S ou [.Para obter mais informações sobre as versões seguras a scanf família de funções, consulte scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

Consulte também

Referência

scanf especificação de largura

scanf caracteres de campo de tipo

scanf, _scanf_l, wscanf, _wscanf_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l