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);