Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada...
Transcript of Manipulação de Strings Marco Reis. Novo arquivo Adicione ManipulacaoDeStrings.c ao projeto. Cada...
Manipulação de StringsMarco Reis
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.
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.
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;}
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);
}
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.
Exemplo
//Declaracao das funcoesvoid RecuperaComGetChar();void ImprimeComPutChar();
//mainint main() { //RecuperaComGetChar(); ImprimeComPutChar(); return EXIT_SUCCESS;}
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; }}
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);
}
Exemplo: alfabeto
void ImprimeAlfabeto() {char c;c = 'a';while (c <= 'z') {
printf("value %d char %c\n", c, c);c = c + 1;
}}
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));}
}
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]);
}}
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]));
}}
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");}
}
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");}
}
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);
}
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);
}
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);
}