You are on page 1of 17

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):
– Comparação (compare):
– Cópia (copy):
– Concatenação (Concatenate):
– Maiúsculas (Upper Case):
– Minúsculas (Lower Case):

strlen
strcmp
strcpy
strcat
toupper
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>

Precisa importar a
biblioteca <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);
}

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.