Entrada e saída de dados

Neste capítulo vamos considerar a entrada e saída padrão, ou seja, entrada a partir do teclado e saída no ecran.

A entrada e saída padrão é feita através de um conjunto de funções da biblioteca standard do C e que estão declaradas no ficheiro de cabeçalho stdio.h.

Funções de entrada de dados do teclado

As funções de entrada de dados a partir do teclado são as seguintes:

  • getchar() : lê um caratere do teclado
  • gets(): lê uma string do teclado
  • scanf() : lê dados formatados do teclado

gerchar()

A função getchar() retorna um caractere introduzido pelo utilizador:

char ch;

puts("Introduza um caractere: ");

ch = getchar();

No exemplo acima, a função getchar() lê um caractere do teclado e atribui-o à variável ch.

gets()

A função gets() lê uma string do teclado e armazena-a numa variável:

   

char str[100];

puts("Escreva uma string: ");

gets(str);

No exemplo acima, a função gets() lê uma string do teclado e guarda-a na variável str.

scanf()

A função scanf() em C é usada para ler dados formatados da entrada padrão (normalmente o teclado) e armazená-los em variáveis.

A assinatura desta função é a seguinte:

scanf(string_formatação, lista_ variáveis);

Esta função pode ler todos os tipos de dados, de acordo com a string de formatação especificada.

A string de formatação da função scanf() é composta por especificadores de formato que indicam o tipo de dado que está a ser lido.

Os especificadores de formato mais importantes são os seguintes:

%d: inteiro

%u: inteiro sem sinal

%f: float

%lf: double

%c: caractere

%s: string

A lista de variáveis são os endereços da variável ou variáveis nas quais os dados serão armazenados.

Exemplo 1:

  

int nr1;

double nr2;

scanf("%d %lf", &nr1, &nr2);

No exemplo acima, a string de formatação na função scanf() especifica um numero inteiro e um numero do tipo double. Estes dados serão guardados respetivamente nas variáveis nr1 e nr2.

De notar o uso do operador de endereço (&) para obter o endereço destas variáveis.

NOTA: sempre que, na função scanf(), não usarmos o operador de endereço (&) o programa estoura.

Exemplo 2:

   

char ch;

scanf("%c", &ch);

Neste exemplo a string de formatação especifica que vamos ler um caractere do teclado e guarda-lo na variável ch do tipo char. Mais uma vez temos de indicar o endereço da variável com o operador &.

Exemplo 3:

char nome[10];

scanf("%s", nome);

Neste exemplo a string de formatação especifica que vamos ler uma string do teclado e guarda-lo na variável nome que é um array de caracteres.

NOTA: como a variável nome é um array (neste caso de caracteres) o nome do array é, por si só, o endereço do mesmo pelo que não é necessário o operador &.

Funções de saída de dados para o ecran

As funções de saída de dados para o ecran são as seguintes:

  • putchar() : escreve um caratere no ecran
  • puts(): escreve uma string no ecran
  • printf() : escreve dados formatados no ecran

putchar()

A função putchar() escreve um caractere no ecran.

Tem como argumento o caractere a escrever no ecran:

char ch = ‘K’;

putchar(ch);

puts()

A função puts() escreve uma string no ecran.

Tem como argumento a string  a escrever no ecran:

puts(”Bem vindos ao C”);

printf()

A função printf() escreve dados formatados no ecran.

A assinatura desta função é a seguinte:

printf(string_formatação, lista_ variáveis);

Esta função pode escrever todos os tipos de dados, de acordo com a string de formatação especificada.

A string de formatação da função printf() é composta por especificadores de formato que indicam o tipo de dado que está a ser escrito.

Os especificadores de formato mais importantes são os seguintes:

%d: inteiro

%u: inteiro sem sinal

%f: float

%lf: double

%c: caractere

%s: string

Na string de formatação podemos juntar texto normal com os especificadores de formato.

A lista de variáveis são as variáveis cujos dados vão ser escritos no ecran e cujos tipos de dados coincidem com os especificadores de formato, pela mesma ordem, na string de formatação.

Exemplo :

int n1 = 34;

float n2 = 7.239;

char ch = '|';

char str[] = "Bem vindos ao C";

printf("%d - %f - %c - %s", n1, n2, ch, str);

Na string de formatação podemos incluir caracteres especiais como ‘\n’ para quebra de linha ou ‘\t’ para tab:

   

int nr1 = 24;

int nr2 = 17;

printf("A variavel nr1 = %d.\nA variavel nr2 = %d.", nr1, nr2);