manipulação de strings
DESCRIPTION
UnipêTRANSCRIPT
Manipulação de Strings
Prof. José Raphael
SPI / 2013.2
strings
• Uma string (cadeia de caracteres) em C é apenas um vetor do tipo char
• Para manipular strings podemos utilizar os mesmos conhecimentos do uso de vetores
• Manipulações básicas:
– Tamanho da string (quantos caracteres antes do ‘\0’)
– Comparação
– Concatenação
– Cópia
– Maiúscula/Minúscula
Strings Tamanho de uma string
char str[500];
scanf(“%s”, &str);
int i = 0;
while ( str[i] != ‘\0’ )
i++;
int length = i;
Strings Comparação de 2 strings (0, 1 ou 2)
char s1[100];
char s2[100];
...
int result = 0;
int i = 0;
While ( s1[i] != ‘\0’ && s2[i] != ‘\0’ && s1[i] != s2[i] ){
if( s1[i] < s2[i] ){
result = -1;
break;
}else{
result = 1;
break;
}
i++;
}
Strings Cópia de strings
char str1[100];
char str2[100];
...
int i;
for(i = 0; str1[i] != ‘\0’; i++){
str2[i] = str1[i];
}
str2[i] = ‘\0’;
Strings Concatenação
char str1[100];
char str2[100];
...
int i,j;
for(i = 0; str1[i] != ‘\0’; i++)
;
for(j = 0; str2[i] != ‘\0’; j++){
str1[i] = str2[j];
i++;
}
str1[i] = ‘\0’;
Strings
• C possui funções prontas para cada uma dessas operações
– Tamanho (length): strlen
– Comparação (compare): strcmp
– Cópia (copy): strcpy
– Concatenação (Concatenate): strcat
– Maiúsculas (Upper Case): toupper
– Minúsculas (Lower Case): tolower
Strings Tamanho
• Função strlen
– int strlen(char *s);
• Retorna o número de caracteres (sem contar o terminador ‘\0’)
Strings Tamanho
#include <stdio.h>
#include <string.h>
int main(){
char nome[100];
printf("digite um nome:\n");
scanf("%s", nome);
getchar();
int tam = strlen(nome);
printf("o nome %s tem %d caracteres\n", nome, tam);
}
Precisa importar a biblioteca <string.h>
Strings Comparação (0, -1 ou 1)
• Função strcmp
– int strcmp(char *s1, char *s2);
• Compara as strings s1 e s2 lexicograficamente. Retorna 0 se forem iguais. Retorna valor negativo se s1<s2 e positivo se s1>s2.
• Exemplos:
– “dudu” < “juju”
– “anderson” < “ze”
– “rat” < “rato”
– “aluna” < “aluno”
Strings Comparação (0, -1 ou 1)
#include <stdio.h>
#include <string.h>
int main() {
char vet1[100], vet2[100];
printf("digite dois nomes:\n");
scanf("%s %s", vet1, vet2);
getchar();
int ret = strcmp(vet1, vet2);
if (ret==0)
printf("%s e igual a %s\n", vet1, vet2);
if (ret>0)
printf("%s e maior que %s\n", vet1, vet2);
if (ret<0)
printf("%s e menor que %s\n", vet1, vet2);
}
Strings Cópia
• Função strcpy
– void strcpy( char *destino, char *fonte );
– Copia o conteúdo de fonte para o destino. Faz o equivalente a uma atribuição.
• Ex: char p[30];
strcpy(p, “Fulano”);
Strings Concatenação
• Função strcat
– void strcat(char *destino, char *fonte);
– Copia o conteúdo da fonte para o final de destino.
– Ou seja, acrescenta o conteúdo de fonte no final de destino.
• Ex:
char p[30] = “Fulano”;
strcat(p, “ da Silva”);
printf(“%s”, p); //Fulano da Silva
Strings Maiúsculas e Minúsculas
• Funções toupper e tolower
– char toupper(char c);
– char tolower(char c);
– Se c for minúsculo e for uma letra, toupper converte o caractere c para maiúsculo.
– tolower faz o oposto.
Strings Maiúsculas e Minúsculas
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(){
char nome[100];
scanf(“%s”, &nome);
getchar();
int i;
int len = strlen(nome);
for(i = 0; i < len; i++){
nome[i] = toupper(nome[i]);
}
printf(“%s\n”, nome);
}
Precisa importar a biblioteca ctype.h
Exemplo
• Ler dois nomes, imprimir o tamanho de cada um, e dizer se são iguais, se o primeiro é maior ou menor que o segundo.
• Fazer um programa que inverta o que foi digitado. “Parabens a voce” vira “ecov a snebaraP”.
Exercícios
• Leia uma linha, e exibe ela toda minúscula, e depois toda maiúscula. Use gets para ler a linha.
• Leia uma linha. Imprima cada palavra digitada em uma linha diferente. Dica: percorra cada caractere imprimindo, se for um espaço ‘ ‘, pule linha.
• Leia duas strings, uma em cada linha. Imprima o resultado da concatenação das duas strings.
• Leia continuamente (com while(1)) uma palavra. Enquanto a palavra for diferente da senha “abcxyz” peça a senha novamente. Só para o programa quando o usuário digitar a senha correta.