17
Manipulação de Strings Prof. José Raphael SPI / 2013.2

Manipulação de Strings

Embed Size (px)

DESCRIPTION

Unipê

Citation preview

Page 1: Manipulação de Strings

Manipulação de Strings

Prof. José Raphael

SPI / 2013.2

Page 2: Manipulação de Strings

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

Page 3: Manipulação de Strings

Strings Tamanho de uma string

char str[500];

scanf(“%s”, &str);

int i = 0;

while ( str[i] != ‘\0’ )

i++;

int length = i;

Page 4: Manipulação de Strings

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++;

}

Page 5: Manipulação de Strings

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’;

Page 6: Manipulação de Strings

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’;

Page 7: Manipulação de Strings

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

Page 8: Manipulação de Strings

Strings Tamanho

• Função strlen

– int strlen(char *s);

• Retorna o número de caracteres (sem contar o terminador ‘\0’)

Page 9: Manipulação de Strings

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>

Page 10: Manipulação de Strings

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”

Page 11: Manipulação de Strings

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);

}

Page 12: Manipulação de Strings

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”);

Page 13: Manipulação de Strings

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

Page 14: Manipulação de Strings

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.

Page 15: Manipulação de Strings

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

Page 16: Manipulação de Strings

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”.

Page 17: Manipulação de Strings

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.