CURSO DE C

Introdução Básica às Entradas e Saídas


Caracteres

Os caracteres são um tipo de dado: o char. O C trata os caracteres como sendo variáveis de um byte (8 bits). Já os inteiros (ints) têm tem um número maior de bytes. Dependendo da implementação do compilador, eles podem ter 2 bytes (16 bits) ou 4 bytes (32 bits). Isto será melhor explicado na aula 2. Assim sendo, podemos usar um char para armazenar tanto valores numéricos inteiros de 0 a 255 quanto um caractere de texto. Para indicar um caractere de texto usamos apóstrofes. Veja um exemplo de programa que usa caracteres:
 
#include <stdio.h>
main ()
{
char Ch;
Ch='D';
printf ("%c",Ch);
}
No programa acima, %c indica que printf() deve colocar um caractere na tela. Muitas vezes queremos ler um caractere fornecido pelo usuário. Para isto as funções mais usadas, quando se está trabalhando em ambiente DOS ou Windows, são getch()getche(). Ambas retornam o caractere pressionado. getche() imprime o caractere na tela antes de retorná-lo e getch() apenas retorna o caractere pressionado sem imprimí-lo na tela. Ambas as funções podem ser encontradas na biblioteca conio.h. Esta biblioteca não está disponível em ambiente Unix (compiladores cc e gcc) e podem, nestes ambientes, ser substituídas pela função scanf(), porém sem as mesmas funcionalidades. Eis um exemplo que usa a função getch(), e seu correspondente em ambiente Unix:
 
#include <stdio.h>
#include <conio.h>
main ()
{
char Ch;
Ch=getch();
printf ("Voce pressionou a tecla %c",Ch);
}
Equivalente para os compiladores cc e gcc do programa acima, sem usar getch():
#include <stdio.h>
main ()
{
char Ch;
scanf("%c", &Ch);
printf ("Voce pressionou a tecla %c",Ch);
}
A principal diferença da versão que utiliza getch() para a versão que não utiliza getch() é que no primeiro caso o usuário simplesmente aperta a tecla e o sistema lê diretamente a tecla pressionada. No segundo caso, é necessário apertar também a tecla <ENTER>.

Strings

O Pascal, ao contrário do C, possui um tipo específico para tratar de strings (sequência de caracteres). No C uma string é um vetor de caracteres terminado com um caractere nulo. O caracter nulo é um caractere com valor igual a zero. O terminador nulo pode ser escrito usando a convenção de barra invertida do C como sendo '\0'. Para declarar uma string podemos usar o seguinte formato geral:

 char nome_da_string[tamanho_da_string];

 Note que, como temos que reservar um caractere para ser o terminador nulo, temos que declarar o comprimento da string como sendo, no mínimo, um caractere maior que a maior string que pretendemos armazenar. Vamos supor que declaremos uma string de 7 posições e coloquemos a palavra João nela. Teremos:

 

\0  ...  ... 
No caso acima, as duas células não usadas têm valores indeterminados. Isto acontece porque o C não inicializa variáveis, cabendo ao programador esta tarefa. Se quisermos ler uma string fornecida pelo usuário podemos usar a função gets(). Um exemplo do uso desta função é apresentado abaixo. A função gets() coloca o terminador nulo na string, quando você aperta a tecla "Enter".

#include <stdio.h>
main ()
{
char string[100];
printf ("Digite uma string: ");
gets (string);
printf ("\n\nVoce digitou %s",string);
}

Como as strings são vetores de caracteres, para se acessar um determinado caracter de uma string, basta "indexarmos", ou seja, usarmos um índice para acessarmos o caracter desejado dentro da string. Suponha uma string chamada str. Podemos acessar a segunda letra de str da seguinte forma:

   str[1] = "a";

Para isto, basta você lembrar-se que o índice sempre começa em zero. Assim, a primeira letra da string sempre estará na posição 0. A segunda letra sempre estará na posição 1 e assim sucessivamente. Segue um exemplo que imprimirá a segunda letra da string "Joao", apresentada acima. Em seguida, ele mudará esta letra e apresentará a string no final.

#include <stdio.h>
main()
{
char str[10] = "Joao";
printf("\n\nString: %s", str);
printf("\nSegunda letra: %c", str[1]);
str[1] = 'U';
printf("\nAgora a segunda letra eh: %c", str[1]);
printf("\n\nString resultante: %s", str);
}

Nesta string, o terminador nulo está na posição 4. Das posições 0 a 4, sabemos que temos caracteres válidos, e portanto podemos escrevê-los.

No programa acima, %s indica que printf() deve colocar uma string na tela. Vamos agora fazer uma abordagem inicial às duas funções que já temos usado para fazer a entrada e saída.

 

printf

A função printf() tem a seguinte forma geral:

 printf (string_de_controle,lista_de_argumentos);

 Teremos, na string de controle, uma descrição de tudo que a função vai colocar na tela. A string de controle mostra não apenas os caracteres que devem ser colocados na tela, mas também quais as variáveis e suas respectivas posições. Isto é feito usando-se os caracteres de controle, que usam a notação %. Na string de controle indicamos quais, de qual tipo e em que posição estão as variáveis a serem apresentadas. É muito importante que, para cada caractere de controle, tenhamos um argumento na lista de argumentos. Apresentamos agora alguns dos códigos %:

 

Código  Significado
%d  Inteiro
%f  Float
%c  Caractere
%s  String
%%  Coloca na tela um % 
 
Vamos ver alguns exemplos de printf() e o que eles exibem:
 
printf ("Teste %% %%") -> "Teste % %"
printf ("%f",40.345) -> "40.345"
printf ("Um caractere %c e um inteiro %d",'D',120) -> "Um caractere D e um inteiro 120"
printf ("%s e um exemplo","Este") -> "Este e um exemplo"
printf ("%s%d%%","Juros de ",10) -> "Juros de 10%"
Maiores detalhes sobre a função printf() serão vistos posteriormente, mas podem ser consultados de antemão pelos interessados.

scanf

O formato geral da função scanf() é:

 scanf (string-de-controle,lista-de-argumentos);

 Usando a função scanf() podemos pedir dados ao usuário. Um exemplo de uso, pode ser visto acima. Mais uma vez, devemos ficar atentos a fim de colocar o mesmo número de argumentos que o de caracteres de controle na string de controle. Outra coisa importante é lembrarmos de colocar o & antes das variáveis da lista de argumentos. É impossível justificar isto agora, mas veremos depois a razão para este procedimento.  Maiores detalhes sobre a função scanf() serão vistos posteriormente, mas podem ser consultados de antemão pelos interessados.

 


AUTO AVALIAÇÃO

Veja como você está.

  • Escreva um programa que leia duas strings e as coloque na tela. Imprima também a segunda letra de cada string.

  • Página Anterior Índice da Aula Próxima Página

    Dúvidas? De uma olhadinha em nosso FAQ

    Perguntas para a lista do Curso de C