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.