Compartilhar via


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

As informações a seguir aplica a scanf a família inteira de funções, inclusive as versões seguros e descreve os símbolos usados para informar as funções de scanf como analisar o fluxo de entrada, como o fluxo de entrada stdin para scanf, os valores inseridos em variáveis de programa.

Uma especificação do formato tem o seguinte formato:

%[*] [largura] [{h | l | ll | I64 | L}]tipo

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

  • Caracteres de espaço em branco: em branco (“"); guia (\ t” "); ou nova linha (\ n “"). Um caractere de espaço em branco faz com que scanf à leitura, mas não ao repositório, todos os caracteres de espaço em branco consecutivos na entrada até o próximo caractere de espaço não-branco-. Um caractere de espaço em branco no formato corresponde a qualquer número (incluindo 0) e combinação de caracteres de espaço em branco na entrada.

  • Não-branco- caracteres de espaço, com exceção do sinal de porcentagem (%). Um caractere de espaço não-branco- causa scanf à leitura, mas não ao repositório, um caractere de espaço não-branco- compatível. Se o próximo caractere no fluxo de entrada não corresponde, scanf termina.

  • Formate as especificações, introduzidas pelo sinal de porcentagem (%). Uma especificação de formato faz com que scanf ler e converte 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. As especificações de formato de fora de caracteres são esperadas corresponder à sequência de caracteres no fluxo de entrada; os caracteres correspondentes no fluxo de entrada são digitalizados mas não são armazenados. Se um caractere no fluxo de entrada entra em conflito com a especificação de formato, scanf termina, e o caractere é deixado no fluxo de entrada como se não tivesse sido lido.

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 por argumentprimeiro. A segunda especificação de formato faz com que o segundo campo de entrada a ser convertida e armazenado em segundo argument, e assim por diante até o término da cadeia de caracteres de formato.

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

Cada campo da especificação de formato é um caractere único ou um número que significa um padrão específico de formato. O caractere de type , que aparece depois que o campo opcional o último de formato, determina se o campo de entrada será interpretado como um caractere, uma cadeia de caracteres, ou um número.

A especificação a mais simples de formato contiver apenas o sinal de porcentagem e um caractere de type (por exemplo, %s). Se um sinal de porcentagem ()%é seguido por um caractere que não tem nenhum significado como um caractere de controle esse formato, caractere e os seguintes caracteres (até o sinal de porcentagem seguir) são tratados como uma sequência comum de caracteres, ou seja, uma sequência de caracteres que devem corresponder à entrada. Por exemplo, para especificar que um caractere de sinal deve ser porcentagem- entrada, use %%.

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

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

Consulte também

Referência

Especificação de largura scanf Width

Caracteres de campo de tipo scanf

scanf, _scanf_l, wscanf, _wscanf_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l