Vous êtes sur la page 1sur 6

3.3.

STRINGS

A string em C define uma sequncia de caracteres alfanumricos (texto). O exemplo:
"CEP80215-901", contm letras, nmeros e smbolos. Tudo o que est entre aspas duplas
dito string.

Uma string pode ser lida num formulrio atravs de uma caixa de texto (EditBox), e
armazenada em uma varivel do tipo char (caracter) da seguinte forma:

3.3.1.Exemplo 1

Lembre que no C, 1 caracter ocupa 1 byte na memria . Ento se definirmos uma varivel do
tipo char, estaremos reservando apenas 1 byte, possibilitando armazenar apenas um nico
caracter.

{
char letra; // varivel para armazenar um caracter.
...
letra = 'a'; // a varivel letra recebe o
// caracter a, observe o uso de
// aspas simples
...
Edit->Text = letra;
}

3.3.2.Exemplo 2

A string "CEP80215-901" ocupa 12 bytes. Como armazenar esta string, se a varivel do tipo
char possui tamanho de 1 byte? Se 1 caracter = 1 byte na memria, ento para armazenar 12
caracteres so necessrios 12 bytes. Ento pode-se criar vetores para armazenar strings
(texto).













Um detalhe importante lembrar que o C, na manipulao de strings, precisa de um byte a
mais alm do necessrio, devido ao caracter de final de arquivo \0 (barra zero). Se a string cep
possui 12 caracteres, ento deve ser criado o vetor com o tamanho 13, como apresentado
abaixo.


Note o uso da funo strcpy() para a leitura do Edit1, em substituio aos atoi( ), atof( ), etc.

3.3.3. Copiando strings

Quando se opera com strings faz-se necessrio o uso de um comando especfico para copiar a
string, como apresentado abaixo:

strcpy(string_destino, string_fonte)


3.3.4. Comparao de Strings

Muitas vezes necessrio realizar a comparao entre duas strings; mas elas no podem ser
comparadas diretamente atravs dos operadores de comparao (smbolo = = ).

No Boto OK:
{
char cep[13];
strcpy(cep, Edit1-Text.c_str());
Edit2->Text = cep;
}
c e p 8 0 2 1 5 - 9 0 1 \0

A funo do C, chamada strcmp(string1, string2) compara duas strings, e retorna o resultado
da comparao, atravs de um valor. Se este valor for 0 (zero ), as duas strings so iguais,
caso contrrio so diferentes.

Exemplo













3.3.5. Tamanho de strings

possvel comparar o tamanho de duas strings usando a funo strlen(), como mostra o
exemplo a seguir.

Exemplo

O form do exemplo anterior pode ser usado para testar qual string a maior, entre os dois
contedos fornecidos atravs das caixas de texto Edit1 e Edit2:
{
int x, y;
char textoA[20];
char textoB[20];
strcpy(textoA, Edit1->Text.c_strs());
strcpy(textoB, Edit2->Text.c_strs());
No boto [Teste de igualdade]:
{
int x;
char cep1[10];
char cep2[10];
strcpy(cep1,Edit1->Text.c_str());
strcpy(cep2,Edit2->Text.c_str());
x = strcmp(cep1,cep2);
if (x==0) Edit3->Text = "iguais";
else Edit3->Text = "diferentes";
}
x = strlen(textoA);
y = strlen(textoB);
if (x > y) Edit3->Text = "texto do Edit1 > texto do Edit2";
if (x < y) Edit3->Text = "texto do Edit1 < texto do Edit2";
if (x == y) Edit3->Text = "texto do Edit1 = texto do Edit2";
}

3.3.6. Comparao de Elementos da String

Para comparar elementos individuais da string, basta acess-lo atravs de seu ndice. Lembre
que cada posio do vetor contm um nico valor. Isto ilustrado pelo exemplo a seguir:

{
... // se o primeiro caracter da string cep for igual a 8 ...
if (cep[0] == '8') Edit3->Text = "Curitiba";
else Edit3->Text = "Cep no cadastrado";
...
}

Ento, para a comparao de elementos da string com valores do tipo char, pode-se utilizar
diretamente os operadores relacionais com um comando if/else ou switch/case. Como um
caracter da string, sozinho no uma string, ento no utiza-se comandos de manipulao de
string. Ou seja, por exemplo, no pode-se usar o comando strcpy() para copiar caracteres, e
sim apenas quando deseja-se copiar toda a string.

3.3.7. Converso de tipos

Muitas vezes pode ser necessrio realizar alterao de tipos. Por exemplo int para char, etc.
3.3.7.1. convertendo valores numricos para caracter

a) comando itoa(valor inteiro, string, base)
{
int num = 12345;
char string[6];
itoa(num, string, 10);
Edit1->Text = string;
}

b) comando sprintf( string, format , argumentos);
{
int num = 12345;
char string[6];
sprintf(string,"%d", num);
Edit1->Text = string;
}
{
float num = 123.456;
char string[20];
sprintf(string,"O valor %.2f", num);
Edit1->Text = string;
}

3.3.7.2. convertendo string para valores numricos

a) comando atoi(string)
{
int num;
char string[6]=12345;
num = atoi(string);
num+=1;
Edit1->Text = num;
}

b) comando atof(string)
{
float num;
char string[7]=1.2345;
num = atof(string);
num+=1;
Edit1->Text = num;
}

3.3.8 Exerccios

1 Num programa em C, o que acontece se a quantidade de carcteres digitada pelo usurio
maior que o tamanho da string definida no programa?

2 - O acontece de manipularmos uma string sem o \0 ?

3 - Escreva um programa, que leia o valor de um nmero de CEP fornecido pelo usurio, e
diga a qual cidade pertence este CEP; aps identificar a cidade, fornecer o nome da rua
associado a ele. O problema deve reconhecer no mnimo 3 cidades e 2 ruas cada. (cidades e
ruas podem ser fictcios); O primeiro caracter da string do cep se refere cidade; os restantes
correspondem rua; O programa deve identificar se o nmero fornecido pelo usurio vlido,
atravs dos requisitos: tamanho do cep, presena do sinal "-", presena de uma cidade
cadastrada e presena de uma rua cadastrada.

4 Digite um programa que coloque em ordem alfabtica (crescente) um string de 20
caracteres.

5 Digite um programa para inverter uma string fornecida pelo usurio.

Vous aimerez peut-être aussi