14.03.2015 Views

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

armazenar tanto valores numéricos inteiros de 0 a 255 quanto um caractere de texto. Para indicar um caractere de<br />

texto usamos apóstrofes. Veja um exemplo de programa que usa caracteres:<br />

#include <br />

main ()<br />

{<br />

char Ch;<br />

Ch='D';<br />

printf ("%c",Ch);<br />

}<br />

No programa acima, %c indica que printf() deve colocar um caractere na tela. Muitas vezes queremos ler um<br />

caractere forneci<strong>do</strong> pelo usuário. Para isto as funções mais usa<strong>da</strong>s, quan<strong>do</strong> se está trabalhan<strong>do</strong> em ambiente DOS ou<br />

Win<strong>do</strong>ws, são getch() e getche(). Ambas retornam o caractere pressiona<strong>do</strong>. getche() imprime o caractere na tela antes<br />

de retorná-lo e getch() apenas retorna o caractere pressiona<strong>do</strong> sem imprimí-lo na tela. Ambas as funções podem ser<br />

encontra<strong>da</strong>s na biblioteca conio.h. Esta biblioteca não está disponível em ambiente Unix (compila<strong>do</strong>res cc e gcc) e<br />

podem, nestes ambientes, ser substituí<strong>da</strong>s pela função scanf(), porém sem as mesmas funcionali<strong>da</strong>des. Eis um<br />

exemplo que usa a função getch(), e seu correspondente em ambiente Unix:<br />

#include <br />

#include <br />

main ()<br />

{<br />

char Ch;<br />

Ch=getch();<br />

printf ("Voce pressionou a tecla %c",Ch);<br />

}<br />

Equivalente para os compila<strong>do</strong>res cc e gcc <strong>do</strong> programa acima, sem usar getch():<br />

#include <br />

main ()<br />

{<br />

char Ch;<br />

scanf("%c", &Ch);<br />

printf ("Voce pressionou a tecla %c",Ch);<br />

}<br />

A principal diferença <strong>da</strong> versão que utiliza getch() para a versão que não utiliza getch() é que no primeiro caso o<br />

usuário simplesmente aperta a tecla e o sistema lê diretamente a tecla pressiona<strong>da</strong>. No segun<strong>do</strong> caso, é necessário<br />

apertar também a tecla .<br />

2.4.2 Strings<br />

O Pascal, ao contrário <strong>do</strong> C, possui um tipo específico para tratar de strings (sequência de caracteres). No C uma<br />

string é um vetor de caracteres termina<strong>do</strong> com um caractere nulo. O caracter nulo é um caractere com valor igual a<br />

zero. O termina<strong>do</strong>r nulo pode ser escrito usan<strong>do</strong> a convenção de barra inverti<strong>da</strong> <strong>do</strong> C como sen<strong>do</strong> '\0'. Para declarar<br />

uma string podemos usar o seguinte formato geral:<br />

char nome_<strong>da</strong>_string[tamanho_<strong>da</strong>_string];<br />

Note que, como temos que reservar um caractere para ser o termina<strong>do</strong>r nulo, temos que declarar o comprimento <strong>da</strong><br />

string como sen<strong>do</strong>, no mínimo, um caractere maior que a maior string que pretendemos armazenar. Vamos supor que<br />

declaremos uma string de 7 posições e coloquemos a palavra João nela. Teremos:<br />

J o a o \0 ... ...<br />

No caso acima, as duas células não usa<strong>da</strong>s têm valores indetermina<strong>do</strong>s. Isto acontece porque o C não inicializa<br />

variáveis, caben<strong>do</strong> ao programa<strong>do</strong>r esta tarefa. Se quisermos ler uma string forneci<strong>da</strong> pelo usuário podemos usar a<br />

função gets(). Um exemplo <strong>do</strong> uso desta função é apresenta<strong>do</strong> abaixo. A função gets() coloca o termina<strong>do</strong>r nulo na<br />

string, quan<strong>do</strong> você aperta a tecla "Enter".<br />

#include <br />

main ()<br />

{<br />

char string[100];<br />

printf ("Digite uma string: ");<br />

gets (string);<br />

Pág. 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!