English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico do idioma C

Controle de fluxo do idioma C

Funções C

Arrays C

Ponteiros C

Strings C

estrutura de linguagem C

arquivo de linguagem C

outro C

manual de referência do C

uso e exemplo da função da biblioteca C scanf()

Biblioteca Padrão - <stdio.h>

função da biblioteca C int scanf(const char *formato, ...) leia entrada formatada da entrada padrão stdin.

declaração

abaixo está a declaração da função scanf().

int scanf(const char *formato, ...)

parâmetro

  • formato -- esta é a string C, que contém um ou mais dos seguintes itens:caractere de espaço, caractere não de espaço e indicador de formato.

o formato do indicador de formato é:

[=%[*][largura][modificadores]type=]

explicação detalhada a seguir:

parâmetrodescrição
*este é um asterisco opcional, que indica que os dados são lidos do fluxo stream, mas pode ser ignorado, ou seja, não é armazenado nos parâmetros correspondentes.
widthisto especifica o número máximo de caracteres a serem lidos na operação de leitura atual.
modificadoresespecificar um tamanho diferente do tipo inteiro (para d, i e n), tipo inteiro sem sinal (para o, u e x) ou tipo flutuante (para e, f e g) para os dados apontados pelos parâmetros adicionais: h : inteiro curto (para d, i e n), ou inteiro curto sem sinal (para o, u e x) l : inteiro longo (para d, i e n), ou inteiro longo sem sinal (para o, u e x), ou tipo de precisão dupla (para e, f e g) L : tipo de precisão dupla longa (para e, f e g)
typeum caractere, que especifica o tipo de dados a ser lido e a maneira de leitura dos dados. Consulte a tabela a seguir para mais detalhes.

indicador de tipo scanf:

tipoentrada qualificadatipo do parâmetro
%a、%A leia um valor flutuante (apenas C99 válido).float *
%ccaractere único: lê o próximo caractere. Se for especificado um não 1 largura width, a função lê width caracteres, os quais são armazenados em posições contíguas no array. Não é adicionado caractere nulo no final. *
%dinteiro decimal: o prefixo + ou - é opcional.int *
%e、%E、%f、%F、%g、%Gnúmero flutuante: contém um ponto decimal, um sinal opcional + ou -um caractere posterior opcional e ou E, seguido por um número decimal. Dois exemplos válidos -732.103 e 7.12e4float *
%ileia inteiros decimal, octal e hexadecimal.int *
%ointeiro octal.int *
%sstring. Isso lê caracteres consecutivos até encontrar um caractere de espaço (o caractere de espaço pode ser espaço em branco, nova linha e tabulação). *
㩵ninteiro não assinado decimal.unsigned int *
%x、%XNúmero inteiro hexadecimal.int *
%p Leia um ponteiro . 
%[] Escaneie o conjunto de caracteres . 
%% Ler % símbolo. 
  • Parâmetros adicionais -- De acordo com diferentes strings de format, a função pode precisar de uma série de parâmetros adicionais, cada um contendo um valor a ser inserido, que substitui cada % sinal no parâmetro de format. O número de parâmetros deve ser o mesmo que o número de % sinais.

Retorno

Se for bem-sucedido, a função retorna o número de correspondências e atribuições bem-sucedidas. Se alcançar o final do arquivo ou ocorrer um erro de leitura, retorna EOF.

Exemplo online

O exemplo a seguir demonstra o uso da função scanf().

#include<stdio.h>
int main(void) 
{ 
    int a,b,c; 
    printf("Por favor, insira três números:");
    scanf("%d%d%d",&a,&b,&c); 
    printf("%d,%d,%d\n",a,b,c);
    return 0; 
}

Vamos compilar e executar o programa acima, o que produzirá o seguinte resultado no modo interativo:

Por favor, insira três números:1 2 3
1,2,3

Explicação de análise:

  • 1、&a、&b、&c; O & é o operador de endereço, que obtém o endereço de memória de cada uma dessas três variáveis.
  • 2、%d%d%d São três valores introduzidos no formato decimal. Ao introduzir, você pode usar um ou mais espaços, teclas de tabulação ou teclas de Enter entre os dois dados.
Se usar , para separar a entrada de: %d, ao informar a entrada correspondente, também é necessário adicionar :,
#include<stdio.h>
int main(void)
{
    int a,b,c;
    printf("Por favor, insira três números:");
    scanf("%d, %d, %d",&a,&b,&c);
    printf("%d, %d, %d\n",a,b,c);
    return 0;
}

Vamos compilar e executar o programa acima, o que produzirá o seguinte resultado no modo interativo:

Por favor, insira três números:1, 2, 3
1, 2, 3

Atenção:No momento da entrada, o , deve estar imediatamente após o número, sem espaço entre o número e o ,.

Ao usar %c para entrada, o espaço e o caractere de escape são considerados caracteres válidos.

#include<stdio.h>
int main(void)
{
    char a,b,c;
    printf("Por favor, insira três caracteres:");
    scanf("%c%c%c",&a,&b,&c); 
    printf("%c,%c,%c\n", a,b,c);
    return 0;
}

Vamos compilar e executar o programa acima, o que produzirá o seguinte resultado no modo interativo:

$ ./a.out 
Por favor, insira três caracteres: run
r,u,n
$ ./a.out 
Por favor, insira três caracteres: r u n
r, ,u

O exemplo a seguir demonstra a recebimento de uma string:

#include <stdio.h>
int main()
{
   char str1[20], str2[30];
   printf("Por favor, insira o nome de usuário:");
   scanf("%s", str1);
   printf("Por favor, insira o seu site:");
   scanf("%s", str2);
   printf("Nome de usuário informado: %s\n", str1);
   printf("O site informado: %s", str2);
   return(0);
}

Vamos compilar e executar o programa acima, o que produzirá o seguinte resultado no modo interativo:

Insira Seu Nome de Usuário: admin
Insira Seu Site: pt.oldtoolbag.com
Nome de Usuário Inserido: admin
Site Inserido: pt.oldtoolbag.com

Biblioteca Padrão - <stdio.h>