• Nenhum resultado encontrado

FUNÇÕES PARA MANIPULAÇÃO DE STRINGS

No documento Linguagem c Completa e Descomp (páginas 140-145)

Arrays de caracteres – strings

7.3 FUNÇÕES PARA MANIPULAÇÃO DE STRINGS

A biblioteca-padrão da linguagem C possui funções especialmente desenvolvidas para a manipulação de strings na biblioteca <string.h>. A seguir são apresentadas algu- mas das mais utilizadas.

7.3.1 Tamanho de uma string

Para obter o tamanho de uma string, usa-se a função strlen():

char str[15] = “teste”;

printf(“%d”,strlen(str));

Nesse caso, a função retornará 5, que é o número de caracteres na palavra “teste”, e não 15, que é o tamanho do array de caracteres.

A função strlen() retorna o número de caracteres que existem antes do caractere ‘\0’, e não o tamanho do array onde a string está armazenada.

7.3.2 Copiando uma string

Vimos que uma string é um array e que a linguagem C não suporta a atribuição de um array para outro. Nesse sentido, a única maneira de atribuir o conteúdo de uma string a outra é a cópia, elemento por elemento, de uma string para outra. A linguagem C possui uma função que realiza essa tarefa para nós: a função strcpy():

140 L I N G UA G E M C C O M P L E TA E D E S C O M P L I C A D A

Basicamente, a função strcpy() copia a sequência de caracteres contida em origem para o array de caracteres destino (Figura 7.3).

Exemplo: strcpy() 01 02 03 04 05 06 07 08 09 10 #include <stdio.h> #include <stdlib.h> int main(){ char str1[100], str2[100];

printf(“Entre com uma string: ”); gets(str1); strcpy(str2, str1); printf(“String 1: %s\n”,str1); printf(“String 2: %s\n”,str2); system(“pause”); return 0; } F I G U R A 7 . 3

Para evitar estouro de buffer, o tamanho do array destino deve ser longo o suficiente para conter a sequência de caracteres contida em origem.

Concatenando strings

A operação de concatenação é outra tarefa bastante comum ao se trabalhar com strings. Basicamente, essa operação consiste em copiar uma string para o final de outra string. Na linguagem C, para fazer a concatenação de duas strings, usa-se a função strcat():

strcat(char *destino, char *origem)

Basicamente, a função strcat() copia a sequência de caracteres contida em origem para o final da string destino. O primeiro caractere da string contida em origem é colo- cado no lugar do caractere “\0” da string destino (Figura 7.4).

Exemplo: strcat() 01 02 03 04 05 06 07 08 09 10 #include <stdio.h> #include <stdlib.h> int main(){ char str1[15] = “bom ”; char str2[15] = “dia”; strcat(str1,str2); printf(“%s”,str1); system(“pause”); return 0; } F I G U R A 7 . 4

Para evitar estouro de buffer, o tamanho do array destino deve ser longo o suficiente para conter a sequência de caracteres contida em ambas as strings: origem e destino.

Comparando duas strings

Da mesma maneira como o operador de atribuição não funciona para strings, o mesmo ocorre com operadores relacionais usados para comparar duas strings. Desse modo, para saber se duas strings são iguais usa-se a função strcmp():

int strcmp(char *str1, char *str2)

A função strcmp() compara posição a posição as duas strings (str1 e str2) e retorna um valor inteiro igual a zero no caso de as duas strings serem iguais. Um valor de re- torno diferente de zero significa que as strings são diferentes (Figura 7.5).

Exemplo: strcmp() 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 #include <stdio.h> #include <stdlib.h> int main(){ char str1[100], str2[100];

printf(“Entre com uma string: ”); gets(str1);

printf(“Entre com outra string: ”); gets(str2); if(strcmp(str1,str2) == 0) printf(“Strings iguais\n”); else printf(“Strings diferentes\n”); system(“pause”); return 0; } F I G U R A 7 . 5

A função strcmp() é case-sensitive. Isso significa que letras maiúsculas e minúsculas tornam as strings diferentes.

142 L I N G UA G E M C C O M P L E TA E D E S C O M P L I C A D A

7.4 EXERCÍCIOS

1) Faça um programa que leia uma string e a imprima na tela.

2) Faça um programa que leia uma string e imprima as quatro primeiras letras dela. 3) Sem usar a função strlen(), faça um programa que leia uma string e imprima

quantos caracteres ela possui.

4) Faça um programa que leia uma string e a imprima de trás para a frente.

5) Faça um programa que leia uma string e a inverta. A string invertida deve ser armazenada na mesma variável. Em seguida, imprima a string invertida.

6) Leia uma string do teclado e conte quantas vogais (a, e, i, o, u) ela possui. Entre com um caractere (vogal ou consoante) e substitua todas as vogais da palavra dada por esse caractere. Ao final, imprima a nova string e o número de vogais que ela possui.

7) Faça um programa que leia uma string e imprima uma mensagem dizendo se ela é um palíndromo ou não. Um palíndromo é uma palavra que tem a propriedade de poder ser lida tanto da direita para a esquerda como da esquerda para a direita. Exemplos: ovo, arara, rever, asa, osso etc.

8) Construa um programa que leia duas strings do teclado. Imprima uma mensagem informando se a segunda string lida está contida dentro da primeira.

9) Construa um programa que leia duas strings do teclado. Imprima uma mensagem informando quantas vezes a segunda string lida está contida dentro da primeira. 10) Escreva um programa que leia uma string do teclado e converta todos os seus

caracteres em maiúscula. Dica: subtraia 32 dos caracteres cujo código ASCII está entre 97 e 122.

11) Escreva um programa que leia uma string do teclado e converta todos os seus ca- racteres em minúscula. Dica: some 32 dos caracteres cujo código ASCII está entre 65 e 90.

12) Escreva um programa que leia o nome e o valor de determinada mercadoria de uma loja. Sabendo que o desconto para pagamento à vista é de 10% sobre o valor total, calcule o valor a ser pago à vista. Escreva o nome da mercadoria, o valor total, o valor do desconto e o valor a ser pago à vista.

13) Escreva um programa que recebe uma string S e dois valores inteiros não negati- vos i e j. Em seguida, imprima os caracteres contidos no segmento que vai de i a j da string S.

14) O código de César é uma das técnicas de criptografia mais simples e conhecidas. É um tipo de substituição no qual cada letra do texto é substituída por outra, que se apresenta n posições após ela no alfabeto. Por exemplo, com uma troca de três posições, a letra A seria substituída por D, B se tornaria E e assim por diante. Escreva um programa que faça uso desse código de César para três posições. Entre com uma string e imprima a string codificada. Exemplo:

String: a ligeira raposa marrom saltou sobre o cachorro cansado

Nova string: d oljhlud udsrvd pduurp vdowrx vreuh r fdfkruur fdqvdgr 15) Escreva um programa que leia duas strings e as imprima em ordem alfabética, a

C A P Í T U LO 8

Tipos definidos pelo

No documento Linguagem c Completa e Descomp (páginas 140-145)

Documentos relacionados