Brazilian Flag American Flag

Back Home Page

Published
Last modified

Funções de Entrada de Dados de C e C++

A entrada de dados é algo muito importante para qualquer programa, que deve ser usado em conjunto com uma função de saída.

A função de saída deve induzir o usuário a fazer uma ação, e a função de entrada é que vai armazenar esta ação do usuário.

Função de Entrada de C

As funções de entrada de C são encontradas na biblioteca padrão de entrada/saída, a STDIO.H.

Toda entrada de dado deve ser armazenada em um endereço de uma variável.

A entrada de entrada de dados é controlada pela função SCANF.

Todas as entradas que devem ser armazenadas devem estar entre aspas identificadas por uma máscara e para cada máscara deve conter um endereço de uma variável.

Para indicar o endereço de uma variável basta antes do nome da variável colocar o caracter que indica endereço, o "E comercial" (&).

//EXEMPLO1

#include <stdio.h>

int main (void)
{
   int nr;
   printf ("Digite um numero: ");
   scanf ("%d", &nr);
   printf ("\n\n\nVoce digitou o numero: %d", nr);
   return 0;
} 

Você também pode especificar entradas múltiplas na mesma linha.

//EXEMPLO2

#include <stdio.h>

int main (void)
{
  int a, b, r;
  printf ("Digite dois numeros para serem somados:\n");
  scanf ("%d %d", &a &b);
  r=a+b;
  printf ("\nA soma de %d mais %d e igual a %d", a, b, r);
  return 0;
}

No programa do exemplo 2 podemos digitar dois números separados por espaço, tabulação ou enter e no final ele mostrará o resultado da soma.

Dicas importantes

Mesmo a função scanf tendo a capacidade de receber vários dados na mesma função, o interessante é apenas usar uma entrada de dado para cada scanf. Assim, teremos mais controle da entrada de dados.

Não é possível carregar uma cadeia de caracteres com a função scanf, ou seja, se tiver um tipo de dado CHAR e entrarmos com uma frase, apenas a primeira letra será lida.

Um problema sério das funções de entrada de C é que tudo do teclado é considerado uma entrada, inclusive o ENTER. Então, se digitarmos um número e apertarmos o ENTER, além do número também fica armazenado o ENTER, que atrapalhará futuras entradas de dados, podendo ocorrer de um dado não ser digitado porque o programa irá considerar que mesmo antes de digitarmos o dado foi dado um ENTER. Esse problema pode ser facilmente resolvido se digitarmos a função GETCHAR () depois de cada SCANF.

Então, o exemplo 2 ficaria melhor dessa forma. Veja:

/*
EXEMPLO3
melhoramento do codigo do exemplo2
*/

#include <stdio.h>

int main (void)
{
  int a, b, r;
  printf ("Digite o primeiro numero que sera somado:\n");
  scanf ("%d", &a);
  getchar ();
  printf ("Digite o segundo numero que sera somado:\n");
  scanf ("%d", &b);
  getchar ();
  r=a+b;
  printf ("\nA soma de %d mais %d e igual a %d", a, b, r);
  return 0;
}

Função de Entrada de C++

As funções de entrada de C++ são encontradas na biblioteca padrão de entrada/saída, a IOSTREAM.

Toda entrada de dado deve ser armazenada em um endereço de uma variável, assim como em C.

A entrada de dados é controlada pela função CIN.

Todas as entradas devem estar depois do acumulador de entrada* (>>) e não é necessário identificar o tipo de dado com uma máscara, nem indicar o endereço da variável, apenas digitamos o nome da variável.

*Cuidado: Não confunda os acumuladores. O acumulador de saída é << e o acumulador de entrada é >>.

//EXEMPLO4
#include <iostream>
using namespace std;

int main (void){
    int nr;
    cout <<"Digite um numero: ";
    cin >> nr;
    cout <<"\n\n\nVoce digitou o numero: "<<nr;
    return 0;
}

Diferentemente do scanf do C, não podemos indicar várias entradas com a função cin. Ou seja, você deve incluir um CIN para cada entrada.

Dicas importantes

Nunca confunda os acumuladores. Entrada >>; e saída <<.

Não é possível carregar uma cadeia de caracteres com a função cin, ou seja, se tiver um tipo de dado CHAR e entrarmos com uma frase, apenas a última letra será lida.

Um problema sério das funções de entrada tanto de C quanto C++ é que tudo do teclado é considerado uma entrada, inclusive o ENTER. Então, se digitarmos um número e apertarmos o ENTER, além do número também fica armazenado o ENTER, que atrapalhará futuras entradas de dados, podendo ocorrer de um dado não ser digitado porque o programa irá considerar que mesmo antes de digitarmos o dado foi dado um ENTER. Esse problema pode ser facilmente resolvido se digitarmos a função CIN.IGNORE () depois de cada CIN.

Veja o exemplo 5.

//EXEMPLO5
#include <iostream>
using namespace std;

int main (void){
    int a, b, r;
    cout <<"Digite o primeiro numero que sera somado:\n";
    cin >> a;
    cin.ignore ();
    cout <<"Digite o segundo numero que sera somado:\n";
    cin >> b;
    cin.ignore ();
    r=a+b;
    cout <<"\nA soma de "<<a<<" mais "<<b<<" e igual a "<<r;
    return 0;
}

Creative Commons License
Funções de Entrada de Dados de C e C++ by Denys Xavier is licensed under a Creative Commons Attribution 4.0 International License.