Engenharia
W. Celes e J. L. Rangel
6.1. Caracteres
Efetivamente, a linguagem C não oferece um tipo caractere. Os caracteres são representados por códigos numéricos. A linguagem oferece o tipo char, que pode armazenar valores inteiros “pequenos”: um char tem tamanho de 1 byte, 8 bits, e sua versão com sinal pode representar valores que variam de –128 a 127. Como os códigos associados aos caracteres estão dentro desse intervalo, usamos o tipo char para representar caracteres1. A correspondência entre os caracteres e seus códigos numéricos é feita por uma tabela de códigos. Em geral, usa-se a tabela ASCII, mas diferentes máquinas podem usar diferentes códigos. Contudo, se desejamos escrever códigos portáteis, isto é, que possam ser compilados e executados em máquinas diferentes, devemos evitar o uso explícito dos códigos referentes a uma determinada tabela, como será discutido nos exemplos subseqüentes. Como ilustração, mostramos a seguir os códigos associados a alguns caracteres segundo a tabela ASCII. Alguns caracteres que podem ser impressos (sp representa o branco, ou espaço): 0 30 40 50 60 70 80 90 100 110 120
( 2 < F P Z d n x
1
) 3 = G Q [ e o y
2 sp * 4 > H R \ f p z
3
! + 5 ? I S ] g q {
4
" , 6 @ J T ^ h r |
5
# 7 A K U _ i S }
6
$ . 8 B L V ` j t ~
7
% / 9 C M W a k u
8
& 0 : D N X b l v
9
' 1 ; E O Y c m w
Alguns caracteres de controle: 0 7 8 9 10 13 127
1
nul bel bs ht nl cr del
null: nulo bell: campainha backspace: voltar e apagar um caractere tab ou tabulação horizontal newline ou line feed: mudança de linha carriage return: volta ao início da linha delete: apagar um caractere
Alguns alfabetos precisam de maior representatividade. O alfabeto chinês, por exemplo, tem mais de 256 caracteres, não sendo suficiente o tipo char (alguns compiladores oferecem o tipo wchar, para estes casos).
6-1
Estruturas de Dados –PUC-Rio
Em C, a diferença entre caracteres e inteiros é feita apenas através da maneira pela qual são tratados. Por