Partilhar via


scanf caracteres de campo de tipo

As informações a seguir se aplica a qualquer um do scanf da família de funções, incluindo as versões seguras, como scanf_s.

O type caractere é o único formato obrigatório de campo; aparece após todos os campos opcionais de formato.O type caractere determina se o argumento associado é interpretado como um caractere, seqüência de caracteres ou número.

Caracteres de tipo para funções de scanf

Caracterer

Tipo de entrada esperado

Tipo de argumento

Argumento de tamanho na versão segura?

c

Caractere.Quando usado com scanf funções, especifica o caractere de byte único; Quando usado com wscanf funções, especifica o caractere largo.Caracteres de espaço em branco que normalmente são ignorados são lidos quando c é especificado.Para ler o próximo caractere de byte único espaço de non–white, use %1s; para ler o próximo non–white-espaço caractere largos, use %1ws.

Ponteiro para char quando usado com scanf funções, o ponteiro para wchar_t quando usado com wscanf funções.

Obrigatório.Tamanho não inclui espaço para um terminador nulo.

C

Oposta caracteres de tamanho.Quando usado com scanf funções, especifica o caractere largo; Quando usado com wscanf funções, especifica o caractere de byte único.Caracteres de espaço em branco que normalmente são ignorados são lidos quando C é especificado.Para ler o próximo caractere de byte único espaço de non–white, use %1s; para ler o próximo non–white-espaço caractere largos, use %1ws.

Ponteiro para wchar_t quando usado com scanf funções, o ponteiro para char quando usado com wscanf funções.

Obrigatório.O argumento de tamanho não inclui espaço para um terminador nulo.

d

Inteiro decimal.

Ponteiro para int.

Não.

i

Um inteiro.Hexadecimal, se a seqüência de caracteres de entrada começa com "0x" ou "0 X", octal se a seqüência de caracteres começa com "0", caso contrário decimal.

Ponteiro para int.

Não.

o

Inteiro octal.

Ponteiro para int.

Não.

u

Inteiro decimal não assinado.

Pointer to unsignedint.

Não.

x

Inteiro hexadecimal.

Ponteiro para int.

Não.

e, E, f, g, G

Valor de ponto flutuante, consistindo de sinal opcional (+ ou –), série de um ou mais dígitos decimais, que contém o ponto decimal e expoente opcional ("e" ou "E") seguido por um valor inteiro assinado opcionalmente.

Ponteiro para float.

Não.

n

Nenhuma entrada de ler do fluxo ou buffer.

Ponteiro para int, no qual está armazenado o número de caracteres com êxito lidos do fluxo ou buffer até esse ponto na chamada atual para scanf funções ou wscanf funções.

Não.

s

Seqüência de caracteres, até o primeiro caractere de espaço em branco (espaço, tabulação ou nova linha).Para ler as seqüências de caracteres que não é delimitadas por caracteres de espaço, use o conjunto de colchetes ([ ]), conforme discutido em scanf especificação de largura.

Quando usado com scanf funciona, significa a matriz de caracteres de byte único; Quando usado com wscanf funciona, significa a matriz de caracteres largos.Em ambos os casos, a matriz de caracteres deve ser grande o suficiente para o campo de entrada plus caractere nulo de terminação, que é automaticamente acrescentado.

Obrigatório.Tamanho inclui o espaço para um terminador nulo.

S

Tamanho oposto de seqüência de caracteres, até o primeiro caractere de espaço em branco (espaço, tabulação ou nova linha).Para ler as seqüências de caracteres que não é delimitadas por caracteres de espaço, use o conjunto de colchetes ([ ]), conforme discutido em scanf especificação de largura.

Quando usado com scanf funciona, significa a matriz de caractere largo; Quando usado com wscanf funciona, significa array único-byte–character.Em ambos os casos, a matriz de caracteres deve ser grande o suficiente para o campo de entrada plus caractere nulo de terminação, que é automaticamente acrescentado.

Obrigatório.Tamanho inclui o espaço para um terminador nulo.

O a e A especificadores (consulte printf caracteres de campo de tipo) não estão disponíveis com scanf.

Os argumentos de tamanho, se necessário, devem ser transmitidos na lista de parâmetros imediatamente após o argumento que eles se aplicam.Por exemplo, o código a seguir:

char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);

lê uma seqüência de caracteres com comprimento máximo de 10 em string1e uma seqüência de caracteres com comprimento máximo de 8 em string2.Os tamanhos de buffer devem ser pelo menos um mais do que as especificações de largura desde espaço devem ser reservados para o terminador nulo.

A seqüência de caracteres de formato pode lidar com a entrada de caracteres de byte único ou de longa distância, independentemente do caractere de byte único ou a versão de caractere largo da função é usado.Assim, a leitura de caracteres de byte único ou de longa distância com scanf funções e wscanf funções, use os especificadores de formato da seguinte maneira.

Ler caractere como

Use esta função

Com esses especificadores de formato

byte único

scanffunções

c, hc, ou hC

byte único

wscanffunções

C, hc, ou hC

ampla

wscanffunções

c, lc, ou lC

ampla

scanffunções

C, lc, ou lC

Para fazer a varredura de cadeias de caracteres com scanf funções, e wscanf funções, use a tabela acima com especificadores de tipo de formato s e S em vez de c e C.

Consulte também

Referência

scanf, _scanf_l, wscanf, _wscanf_l