Compartilhar via


Caracteres de campo de tipo scanf

As informações a seguir se aplicam a qualquer da família de scanf de funções, inclusive as versões seguros, como scanf_s.

O caractere de type é o único campo obrigatório de formato; aparece depois de todos os campos opcionais de formato. O caractere de type determina se o argumento associado será interpretado como um caractere, uma cadeia de caracteres, ou um número.

Caracteres de tipo para funções de scanf

Caractere

Tipo de entrada esperado

Tipo de argumento

Argumento de tamanho na versão seguro?

c

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

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

Obrigatório. O tamanho não incluir espaço para um terminador nulo.

C

Caractere oposto do tamanho. Quando usado com scanf funções, especifica o caractere largo; quando usado com wscanf funções, especifica o caractere de byte único. Os caracteres de espaço em branco que são ignorados normalmente são lidos quando C é especificado. Para ler o próximo caractere de byte único não-branco- de espaço, use %1s; para ler o não-branco- espaço seguir o caractere largo, use %1ws.

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

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

d

Inteiro decimal.

Ponteiro para int.

Não.

i

Um inteiro. Hexadecimal se a cadeia de caracteres de entrada começa com “0x” ou “0X”, octal se a cadeia de caracteres começa com “0 ", caso contrário decimal.

Ponteiro para int.

Não.

o

Octal inteiro.

Ponteiro para int.

Não.

u

Inteiro decimal não assinado.

Ponteiro para unsignedint.

Não.

x

Inteiro hexadecimal.

Ponteiro para int.

Não.

e, E, f, g, G

O valor de ponto flutuante que consiste no sinal opcional (+ ou -), na série de um ou mais dígitos decimais que contém o ponto decimal, e o expoente opcional (“e” ou “E”) opcionalmente seguido por um valor inteiro assinado.

Ponteiro para float.

Não.

n

Nenhuma leitura de entrada do fluxo ou do buffer.

O ponteiro para int, em que é o número armazenado de caracteres com êxito lidos do fluxo ou armazenar em buffer até aquele ponto na chamada atual para funções de scanf ou funções de wscanf .

Não.

s

Cadeia de caracteres, até o primeiro caractere de espaço em branco (espaço, guia ou nova linha). Para ler as cadeias de caracteres não delimitadas por caracteres de espaço, use o conjunto de chaves ([ ]), como discutido em Especificação de largura scanf Width.

Quando usado com scanf funções, significa a matriz de caractere de byte único; quando usado com wscanf funções, significa a matriz ampla de caracteres. Em ambos os casos, a matriz de caractere deve ser grande o suficiente para o campo de entrada mais encerrar o caractere nulo, que é acrescentado automaticamente.

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

S

Cadeia de caracteres de Oposto- tamanho, até o primeiro caractere de espaço em branco (espaço, guia ou nova linha). Para ler as cadeias de caracteres não delimitadas por caracteres de espaço, use o conjunto de chaves ([ ]), como discutido em Especificação de largura scanf Width.

Quando usado com scanf funções, significa a matriz ampla de caracteres; quando usado com wscanf funções, significa a matriz de único-byte- caractere. Em ambos os casos, a matriz de caractere deve ser grande o suficiente para o campo de entrada mais encerrar o caractere nulo, que é acrescentado automaticamente.

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

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

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

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

lê uma cadeia de caracteres com um comprimento máximo de 10 em string1, e uma cadeia de caracteres com um comprimento máximo de 8 em string2. Os tamanhos de buffer deve ser pelo menos um número maior que as especificações de largura desde que o espaço deve ser reservada para o terminador nulo.

A cadeia de caracteres de formato pode tratar o byte único ou o caractere largo entrada independentemente da versão de caractere ou de ampla caractere de byte único da função é usada. Assim, para ler como segue o byte único ou caracteres amplos com funções de scanf e funções de wscanf , especificadores de formato de uso.

O caractere de leitura como

Use esta função

Com esses especificadores de formato

byte único

funções descanf

c, hc ou hC

byte único

funções dewscanf

C, hc ou hC

largura

funções dewscanf

c, lc ou lC

largura

funções descanf

C, lc ou lC

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

Consulte também

Referência

scanf, _scanf_l, wscanf, _wscanf_l