Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As informações a seguir se aplicam a qualquer função da família de funções scanf, incluindo as versões seguras como scanf_s.
O caractere type é o único campo de formato necessário; ele aparece depois de quaisquer campos de formato opcionais. O caractere type determina se o argumento associado é interpretado como um caractere, uma cadeia de caracteres ou um número.
typeCaracteres para funções scanf
| Caractere | Tipo de entrada esperado | Tipo de argumento | Argumento de tamanho na versão segura? |
|---|---|---|---|
c |
Caractere. Quando usado com funções scanf, especifica o caractere de byte único; quando usado com funções wscanf, especifica o caractere largo. Caracteres de espaço em branco que normalmente são ignorados são lidos quando c é especificado. Ao contrário de outros campos de tipo, o especificador de largura do campo indica o número exato de caracteres, não o máximo. Para ler o próximo caractere de byte único que não é espaço em branco, use %1s; para ler o próximo caractere largo que não é espaço em branco, use %1ws. |
Ponteiro para char quando usado com funções scanf, ponteiro para wchar_t quando usado com funções wscanf. |
Obrigatória. O tamanho não inclui espaço para um terminador nulo. |
C |
Caractere de tamanho oposto. Quando usado com funções scanf, especifica o caractere largo; quando usado com funções wscanf, especifica o caractere de byte único. Caracteres de espaço em branco que normalmente são ignorados são lidos quando C é especificado. Ao contrário de outros campos de tipo, o especificador de largura do campo indica o número exato de caracteres, não o máximo. Para ler o próximo caractere de byte único que não é espaço em branco, use %1s; para ler o próximo caractere largo que não é espaço em branco, use %1ws. |
Ponteiro para wchar_t quando usado com funções scanf, ponteiro para char quando usado com funções wscanf. |
Obrigatória. 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 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 |
Inteiro octal. | Ponteiro para int. |
Não. |
p |
Um endereço de ponteiro em dígitos hexadecimais. O número máximo de dígitos lidos depende do tamanho de um ponteiro (32 bits ou 64 bits), que depende da arquitetura da máquina. "0x" ou "0X" são aceitos como prefixos. | Ponteiro para void*. |
Não. |
u |
Inteiro decimal sem sinal. | Ponteiro para unsigned int. |
Não. |
x |
Inteiro hexadecimal. | Ponteiro para int. |
Não. |
e, E, f, F, g, , G |
Valor de ponto flutuante consistindo de um sinal opcional (+ ou -), de uma série de um ou mais dígitos decimais que contém o ponto decimal e também de um expoente opcional ("e" ou "E"), seguido por um valor inteiro com sinal opcionalmente. | Ponteiro para float. |
Não. |
a, A |
Valor de ponto flutuante que consiste em uma série de um ou mais dígitos hexadecimais com um ponto decimal opcional e um expoente ("p" ou "P") seguido de um valor decimal. | Ponteiro para float. |
Não. |
n |
Nenhuma entrada lida do fluxo ou buffer. | Ponteiro para int, no qual é armazenado o número de caracteres lidos com êxito do fluxo ou buffer até esse ponto na chamada atual para funções scanf ou funções wscanf. |
Não. |
s |
Cadeia de caracteres, até o primeiro caractere de espaço em branco (espaço, tabulação ou nova linha). Para ler cadeias de caracteres não delimitadas por caracteres de espaço, use o conjunto de colchetes ([ ]), conforme discutido em scanfEspecificação de largura scanf Width. |
Quando usado com funções scanf, significa matriz de caracteres de byte único; quando usado com funções wscanf, significa matriz de caracteres largos. Em ambos os casos, a matriz de caracteres deve ser grande o suficiente para o campo de entrada mais o caractere nulo de terminação, que é anexado automaticamente. |
Obrigatória. O tamanho inclui espaço para um terminador nulo. |
S |
Cadeia de caracteres de tamanho oposto, até o primeiro caractere de espaço em branco (espaço, tabulação ou nova linha). Para ler cadeias de caracteres não delimitadas por caracteres de espaço, use o conjunto de colchetes ([ ]), conforme discutido em scanfEspecificação de largura scanf Width. |
Quando usado com funções scanf, significa matriz de caracteres largos; quando usado com funções wscanf, significa matriz de caracteres de byte único. Em ambos os casos, a matriz de caracteres deve ser grande o suficiente para o campo de entrada mais o caractere nulo de terminação, que é anexado automaticamente. |
Obrigatória. O tamanho inclui espaço para um terminador nulo. |
Os argumentos de tamanho, se necessário, devem ser passados na lista de parâmetros imediatamente após o argumento ao qual se aplicam. Por exemplo, o código a seguir:
char string1[11], string2[9];
scanf_s("%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 devem ser maiores do que as especificações de largura por pelo menos uma unidade, já que o espaço deve ser reservado para o terminador nulo.
A cadeia de caracteres de formato pode lidar com a entrada de caracteres de byte único ou largos independentemente de qual versão da função é usada, de caractere largo ou de caractere de byte único. Portanto, para ler caracteres de byte único ou largos com funções scanf e funções wscanf, use os especificadores de formato conforme descrito a seguir.
| Para ler o caractere como | Use esta função | Com estes especificadores de formato |
|---|---|---|
| byte único | Funções scanf |
c, hc ou hC |
| byte único | Funções wscanf |
C, hc ou hC |
| largos | Funções wscanf |
c, lc ou lC |
| largos | Funções scanf |
C, lc ou lC |
Para examinar cadeias de caracteres com funções scanf e funções wscanf, use a tabela acima com os especificadores de tipo de formato s e S em vez de c e C.