Você está na página 1de 17

Manipulao 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
Manipulaes bsicas:

Tamanho da string (quantos caracteres antes do \0)


Comparao
Concatenao
Cpia
Maiscula/Minscula

Strings
Tamanho de uma string
char str[500];
scanf(%s, &str);
int i = 0;
while ( str[i] != \0 )
i++;
int length = i;

Strings
Comparao 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
Cpia 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
Concatenao
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 funes prontas para cada uma
dessas operaes
Tamanho (length):
Comparao (compare):
Cpia (copy):
Concatenao (Concatenate):
Maisculas (Upper Case):
Minsculas (Lower Case):

strlen
strcmp
strcpy
strcat
toupper
tolower

Strings
Tamanho
Funo strlen
int strlen(char *s);

Retorna o nmero 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
Comparao (0, -1 ou 1)
Funo 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
Comparao (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
Cpia
Funo strcpy
void strcpy( char *destino, char *fonte );
Copia o contedo de fonte para o destino. Faz o
equivalente a uma atribuio.

Ex:
char p[30];
strcpy(p, Fulano);

Strings
Concatenao
Funo strcat
void strcat(char *destino, char *fonte);
Copia o contedo da fonte para o final de destino.
Ou seja, acrescenta o contedo de fonte no final
de destino.

Ex:
char p[30] = Fulano;
strcat(p, da Silva);
printf(%s, p); //Fulano da Silva

Strings
Maisculas e Minsculas
Funes toupper e tolower
char toupper(char c);
char tolower(char c);
Se c for minsculo e for uma letra, toupper
converte o caractere c para maisculo.
tolower faz o oposto.

Strings
Maisculas e Minsculas
#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 so 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.

Exerccios
Leia uma linha, e exibe ela toda minscula, e depois
toda maiscula. 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 espao , pule linha.
Leia duas strings, uma em cada linha. Imprima o
resultado da concatenao das duas strings.
Leia continuamente (com while(1)) uma palavra.
Enquanto a palavra for diferente da senha abcxyz pea
a senha novamente. S para o programa quando o
usurio digitar a senha correta.