Scanf

Definição - o que significa Scanf?

Na linguagem de programação C, scanf é uma função que lê dados formatados de stdin (ou seja, o fluxo de entrada padrão, que geralmente é o teclado, a menos que seja redirecionado) e então escreve os resultados nos argumentos fornecidos.

Esta função pertence a uma família de funções que possuem a mesma funcionalidade, mas diferem apenas em sua fonte de dados. Por exemplo, fscanf obtém sua entrada de um fluxo de arquivo, enquanto sscanf obtém sua entrada de uma string.

Definirtec explica Scanf

A função scanf tem o seguinte protótipo / assinatura:

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

onde

  • int (inteiro) é o tipo de retorno
  • formato é uma string que contém o (s) especificador (es) de tipo (veja abaixo)
  • "..." (reticências) indica que a função aceita um número variável de argumentos; cada argumento deve ser um endereço de memória onde o resultado convertido é escrito

Um especificador de tipo simples consiste em um símbolo de porcentagem (%) e um caractere alfa que indica o tipo. Abaixo estão alguns exemplos dos especificadores de tipo reconhecidos por scanf:

  • % c - personagem
  • % d - número inteiro assinado
  • % x - Inteiro sem sinal em formato hexadecimal
  • % f - ponto flutuante
  • % s - string

A função funciona lendo a entrada do fluxo de entrada padrão e, em seguida, verifica o conteúdo do "formato" para quaisquer especificadores de formato, tentando combinar os dois. Em caso de sucesso, a função escreve o resultado no (s) argumento (s) passado (s).

Por exemplo, se a chamada de função for

scanf ("% c% d", & var1, & var2);

e o usuário digitar "a1", a função escreverá "a" em "var1" e "1" em "var2". Se a chamada de função, no entanto, for

scanf ("% x", & var);

a mesma entrada será lida como o número hexadecimal "a1", que é 161 em decimal.

A função retorna o seguinte valor:

  • > 0 - O número de itens convertidos e atribuídos com sucesso.
  • 0 - Nenhum item foi atribuído.
  • <0 - Erro de leitura encontrado ou fim de arquivo (EOF) alcançado antes de qualquer atribuição ser feita.