Conjuntos de caracteres (Strings)
Através da linguagem C, é possível manipular dados que representam uma sequência de caracteres. Eu me refiro ao tipo string (array de caracteres - chars). Por exemplo, veja o programa abaixo:
#include <stdio.h>
#include <string.h>
int main() {
char palavra[30];
int tam;
printf( "Informe uma palavra: " );
gets( palavra );
tam = strlen( palavra );
if ( tam > 0 )
printf( "\nA primeira letra da palavra eh: %c", palavra[0] );
else printf( "\nVoce nao digitou uma palavra!" );
return 0;
}
No programa acima é declarado um array de chars para armazenar o conjunto de caracteres (string). Logo após a declaração de variáveis, o programa solicita que o usuário informe uma palavra e a armazena na variável de nome palavra. Em seguida, o programa calcula a quantidade de caracteres da string informada utilizando a função strlen (str de string e len de length - tamanho). Caso o usuário não tenha digitado um texto vazio, a primeira letra da palavra informada é impressa.
Como uma string é armazenada
Uma string é armazenada como um array de chars. Por exemplo: A palavra "amor" fica armazenada da seguinte forma:
Caracteres | a | m | o | r | \0 |
---|---|---|---|---|---|
Indice | 0 | 1 | 2 | 3 | 4 |
Preste atenção ao vetor string utilizado para armazenar a palavra amor. Repare o caractere \0 (Caractere nulo) marca o final da string. Se fosse a fraze "Meu amor!" ficaria armazenado conforme a seguir:
Caracteres | M | e | u | a | m | o | r | ! | \0 | |
---|---|---|---|---|---|---|---|---|---|---|
Indice | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Veja abaixo, um programa que solicita que o usuário informe uma string (a leitura é feita através da função gets) e mostra se a string que o usuário digitou é igual a palavra "amor":
#include <stdio.h>
#include <string.h>
int main() {
char palavra1[30];
char palavra2[30];
strcpy( palavra1, "amor" );
printf( "Informe uma palavra: " );
gets( palavra2 );
if ( strcmp( palavra1, palavra2 ) == 0 )
printf( "\nVoce digitou a palavra amor" );
else printf( "\nVoce nao digitou a palavra amor" );
return 0;
}
Veja o próximo exemplo que trata-se de um programa que pede que o usuário digite duas strings e informa se a primeira é igual, menor ou maior que a segunda. Ex: A palavra cadeira é menor que a palavra ovo, pois, a primeira letra da palavra cadeira (que é 'c'), é menor que a primeira letra da palavra ovo (que é 'o').
#include <stdio.h>
#include <string.h>
int main() {
char palavra1[30];
char palavra2[30];
int cmp;
printf( "Informe uma palavra(1): " );
gets( palavra1 );
printf( "Informe uma palavra(2): " );
gets( palavra2 );
cmp = strcmp( palavra1, palavra2 );
/* ATENCAO: a funcao strcmp permite que duas strings
seja verificadas em ordem alfabética se a primeira eh
maior, menor ou igual a segunda (conforme a ordenacao) */
if ( cmp == 0 )
printf( "\nA primeira palavra eh igual a segunda." );
else if ( cmp < 0 )
printf( "\nA primeira palavra eh maior que a segunda." );
else printf( "\nA primeira palavra eh menor que a segunda." );
return 0;
}
Abaixo um programa que concatena duas strings e mostra o resultado. Para concatenação, é utilizada a função strcat conforme a seguir:
#include <stdio.h>
#include <string.h>
int main() {
char palavra1[60];
char palavra2[30];
strcpy( palavra1, "Oi! meu nome eh " );
strcpy( palavra2, "Italo" );
strcat( palavra1, palavra2 );
printf( "%s", palavra1 );
return 0;
}
Exercícios
1) Faça um programa que leia uma string e verifique se a primeira letra da string lida é igual a "C"
2) Faça um programa que leia uma string e verifique se a primeira letra é igual a ultima.
Atenção: É necessário verificar o tamanho da string que deve ser maior ou igual a 1.
3) Faça um programa que leia uma string, inverta os valores da primeira letra e a ultima e mostre a string alterada.
Atenção: É necessário verificar se a string lida tem tamanho maior ou igual a 2.
Dica: para inverter o valor de duas variáveis, por exemplo, de nome (a) e (b), utilize uma variável auxiliar (aux) como a seguir:
aux = a;
a = b;
b = aux;
4) Faça um programa que verifique se uma string é palíndromo. Isto é, uma palavra é dita palindromo se a primeira letra é igual a ultima, a segunda é igual a antepenultima e, assim, sucessivamente.
Exemplo: São palíndromos as palavras: ovo, erre, abcba, ijkji, ijji. Não são palíndromos as palavras: ova, erra, abcea.