next up previous contents
Next: Interação com arquivos Up: Rotinas para entrada e Previous: Rotinas para entrada e   Sumário

Interação com dispositivos padrão

Os dispositivos padrão de interação com o usuário são o teclado (dispositivo de entrada padrão) e a tela do monitor (dispositivo de saída padrão). C suporta rotinas para acessar diretamente estes dispositivos.

A rotina básica de entrada de dados lê um caráter do teclado, retornando seu valor ASCII. Esta rotina é

    #include <stdio.h>
    int getchar();
A descrição acima deve ser lida da seguinte forma: o arquivo de cabeçalho stdio.h tem que ser incluído no arquivo fonte que for usar esta rotina getchar, e esta rotina não tem nenhum argumento e retorna um valor inteiro.

O seguinte exemplo ilustra o uso de getchar:

    #include <stdio.h>

    main() {
      int ch;

      ch=getchar();
      printf("valor ASCII de %c = %d (hexa %x)\n", ch, ch, ch);
    }
Este programa, quando executado, irá aguardar que o usuário entre algum caráter via teclado. A saída será uma indicação de qual caráter foi obtido ao longo com seu valor em representação decimal e hexadecimal.

A rotina correspondente a getchar para a apresentação de um caráter na tela é putchar

    #include <stdio.h>
    int putchar(char);

Por exemplo, o programa anterior poderia ser estendido de forma a que um prompt (tal como >) indicasse ao usuário que uma entrada de dados é aguardada:

    #include <stdio.h>

    main() {
      int ch;

      putchar('>');
      ch=getchar();
      printf("valor ASCII de %c = %d (hexa %x)\n", ch, ch, ch);
    }

É possível entrar uma string a partir do teclado usando a rotina gets,

    #include <stdio.h>
    char *gets(char *);
Esta rotina lê uma string do teclado armazenando-o no arranjo de caracteres apontado por seu argumento. A entrada da string é terminada pela tecla ENTER, que é substituído internamente pelo caráter NUL. O valor de retorno é o endereço do argumento se tudo correu bem ou o apontador nulo se houve alguma condição de erro. Por exemplo,
    #include <stdio.h>

    main() {
      char strch[60];
      char *pch;

      putchar('>');
      pch=gets(strch);
      if (pch != 0)
        printf("string aceita foi: %s\n", pch);
      else
        printf("Erro na obtencao da string!\n");
    }

Este programa aceita uma string via teclado, armazenando-a no arranjo de caracteres strch. Observe que o programador deve reservar o espaço que será utilizado para guardar a string. Aceitando a string, esta será ecoado para a tela. Caso contrário (por exemplo, a entrada é o caráter de fim de arquivo ^D), a mensagem de erro será apresentada.

A rotina de saída com formatação de valores, printf, já foi apresentada anteriormente. Há também uma rotina para a entrada de dados formatados, que é scanf:

    #include <stdio.h>
    int scanf(char *format, lista_enderecos);
O primeiro argumento de scanf é uma string contendo seqüências de conversão de formatos, seguindo o que já foi especificado em printf. Caracteres que não sejam parte de uma seqüência de conversão na string de formato indica entrada que deve ser ignorada. O valor de retorno é o número de conversões realizadas com sucesso.

Por exemplo, para ler um valor inteiro do teclado diretamente para uma variável inteira, o seguinte programa poderia ser usado:

    #include <stdio.h>

    main() {
      int  value;

      scanf("%d",&value);
      printf("numero aceito foi: %d\n", value);
    }
Observe que o endereço da variável é o argumento de scanf.


next up previous contents
Next: Interação com arquivos Up: Rotinas para entrada e Previous: Rotinas para entrada e   Sumário
Ivan L. M. Ricarte 2003-02-14