18
Manipulação de Strings Marco Reis

Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Embed Size (px)

Citation preview

Page 1: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Manipulação de StringsMarco Reis

Page 2: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Novo arquivo

• Adicione ManipulacaoDeStrings.c ao projeto.• Cada projeto pode ter apenas um método

main. • Como outros programas podem já ter esse

método, comente todas as linhas com /* */, ou mude o nome para main1, main2, main3, … , main99.

Page 3: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Dica

• O código a seguir utiliza a estrutura de funções para organização.

• Pode ser utilizada livremente a programação sem funções, ou seja, utilize os blocos de código diretamente dentro do main.

• Atenção redobrada neste caso para a organização, identação e legibilidade do código.

Page 4: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Função getchar()

• Função básica para entrada de caracteres.• Bastante prática e flexível//#include <limits.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>//int main() { printf("Informe um caracter.\n"); char caracter = getchar(); printf("Voce digitou: %c\n", caracter); printf("Codigo ASCII de %c: %d", caracter, caracter); return EXIT_SUCCESS;}

Page 5: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Tudo junto

//Diretivas#include <limits.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>

//Declaracao das funcoesvoid RecuperaComGetChar();

//mainint main() {

RecuperaComGetChar();return EXIT_SUCCESS;

}

//Implementacoesvoid RecuperaComGetChar() {

printf("Informe um caracter.\n");char caracter = getchar();printf("Voce digitou: %c\n", caracter);printf("Codigo ASCII de %c: %d", caracter, caracter);

}

Page 6: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Outra função: toupper()

void ImprimeComPutChar() { printf("Informe um caracter.\n"); char caracter = getchar(); char caracterMaiusculo; printf("Voce digitou: "); // putchar(caracter); caracterMaiusculo = toupper(caracter); printf("\nAgora, maiusculo: "); putchar(caracterMaiusculo); // if(islower(caracter)) { printf("\nO caracter eh minusculo"); }}

Obs: não se esqueça de declarar essa função no inicio do programa e chamá-la no main.

Page 7: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Exemplo

//Declaracao das funcoesvoid RecuperaComGetChar();void ImprimeComPutChar();

//mainint main() { //RecuperaComGetChar(); ImprimeComPutChar(); return EXIT_SUCCESS;}

Page 8: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Constantes

• Utiliza as constantes para dar mais clareza ao código.

void ImprimeTodosOsCaracteres() { char c; c = CHAR_MIN; //Constante pre-definida while (c != CHAR_MAX) { printf("%c\n", c); c = c + 1; }}

Page 9: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

gets e puts

void RecuperaVariosCaracteres() {char frase[80];printf("Informe uma frase: \n");//Recupera uma frase//scanf - recupera uma palavra//Faca o teste e veja a diferencagets(frase);printf("Frase: %s\n", frase);//ouprintf("Podemos imprimir assim: ");puts(frase);

}

Page 10: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Exemplo: alfabeto

void ImprimeAlfabeto() {char c;c = 'a';while (c <= 'z') {

printf("value %d char %c\n", c, c);c = c + 1;

}}

Page 11: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Capitulação

void TrocaCapitulacao() {printf("Digite um caracter:\n");char c = getchar();printf("Voce digitou ->%c\n\n", c);

//Imprime o inverso da capitulacao atualif (isupper(c)) {

putchar(tolower(c));} else if (islower(c)) {

putchar(toupper(c));}

}

Page 12: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

ImprimePalavra

void ImprimeCaracteresDeUmaPalavra() {char palavra[20];printf("Informe a palavra:\n");scanf("%s", palavra);int tamanho = (int) sizeof(palavra);printf("Tamanho do array: %d\n", tamanho);int i;for (i = 0; i < sizeof(palavra); i++) {

//Se o espaco do array estiver em branco, termina a execucao//Experimente remover o bloco e veja a diferenca if (palavra[i] == 0) {

break;}//Imprime cada um dos caracteres, caso nao seja caracter em brancoprintf("->%c\n", palavra[i]);

}}

Page 13: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

ImprimeComUpper

void ImprimeUpper() {char palavra[20];printf("Informe a palavra:\n");// Teste com scanfgets(palavra);int i = 0;for (i = 0; i < sizeof(palavra); i++) { //Mais uma vez, se o caracter for fim da linha, termina a execucao

if (palavra[i] == 0) {break;

}printf("%c", toupper(palavra[i]));

}}

Page 14: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Comparação

void ComparaStrings() {char primeiraPalavra[80];char segundaPalavra[80];printf("Digita a primeira palavra:\n");//Teste com scanfgets(primeiraPalavra);printf("Digite a segunda:\n");//Teste com scanfgets(segundaPalavra);//Verifica se as strings sao iguaisint comparacao = strcmp(primeiraPalavra, segundaPalavra);//Para ser igual, o resultado deve ser 0if (comparacao == 0) {

printf("Sao iguais");} else {

printf("Sao diferentes");}

}

Page 15: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

Comparação ignore case

void ComparaStringsIgnoraCapitulacao() {char primeiraPalavra[80];char segundaPalavra[80];printf("Digita a primeira palavra:\n");//Teste com scanfgets(primeiraPalavra);printf("Digite a segunda:\n");//Teste com scanfgets(segundaPalavra);//Verifica se as strings sao iguaisint comparacao = strcasecmp(primeiraPalavra, segundaPalavra);//Para ser igual, o resultado deve ser 0if (comparacao == 0) {

printf("Sao iguais");} else {

printf("Sao diferentes");}

}

Page 16: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

EncontraCaracter

void EncontraCaracter() {//Uma frase qualquerchar frase[80] = "Biblioteca de Programacao em JavaScript";/* * A frase resultante da consulta * No caso, a frase a partir do caracter 'P' * Teste com outros caracteres e veja o resultado * Dica: frase[80] ou *frase sao exatamente a mesma coisa em C * Dessa forma, todos os programas estao livres para utilizar as duas formas * */char *resultado = strchr(frase, 'e');printf("%s", resultado);

}

Page 17: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

EncontraPalavra

void EncontraPalavra() {char *frase = "Marco Antonio de Sousa Reis";

//Basicamente a mesma coisa, mas pode receber varios caracteres como parametrochar *resultado = strstr(frase, "de");printf("%s", resultado);

}

Page 18: Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada projeto pode ter apenas um método main. Como outros programas

EncontraPalavra

void CopiaStrings() {char primeiraFrase[80];char segundaFrase[80];printf("Informe seu nome:\n");gets(primeiraFrase);printf("Informe seu sobrenome:\n");gets(segundaFrase);//char *fraseResultante = strcat(primeiraFrase, segundaFrase);//printf("Resultado: %s\n", fraseResultante);

}