Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada...

18
Manipulação de Strings Marco Reis

Transcript of Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada...

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

}