Ir ao conteúdo
  • Cadastre-se

C Encontrar uma palavra na string


MatheusINF

Posts recomendados

Olá pessoal, Boa tarde :)

Bom eu preciso mostrar quantas a palavra 'de' aparece na frase

 

int main()
{
      char frase[25] ;
      int i , cont=0;

      printf("Digite uma frase qualquer em letras minusculas: ");
      scanf(" %[^\n]",frase);

      for(i=0; i<strlen(frase); i++)
      {
            if ( (frase[i] == 'd') && (frase[i+1] == 'e') ) cont++;
      }

      printf("\n\nA palavra 'de' aparece %d vezes na frase.",cont);

}

 

 

adicionado 6 minutos depois

Bom galera consegui, porém não sei se ficou muito correto, porém está funcionando 

int main()
{
      char frase[100] ;
      int i , cont=0;

      printf("Digite uma frase qualquer: ");
      scanf(" %[^\n]",frase);

      strlwr(frase);

      for(i=0; i<strlen(frase); i++)
      {
            if ( (frase[i] == 'd') && (frase[i+1] == 'e') )
            {
                 if(frase[i+2] == ' ' || frase[i+2] == '\0') cont++;
            }
      }

      printf("\n\nA palavra 'de' aparece %d vezes na frase.",cont);
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Fiz usando strtok() usando o caractere de espaço " " como separador de tokens na string, assim ele separa cada palavra da frase (nesse caso a função substitui o espaço ' ' pelo caractere nulo '\0', e retorna o endereço de memória do início da palavra). E então basta usar strcmp para comparar a palavra encontrada com a string "de", e incrementar o contador se forem iguais.

 

#include <stdio.h>
#include <string.h>

int main()
{
    char frase[100], *palavra;
    int cont=0;
    
    printf("Digite uma frase qualquer em letras minusculas: ");
    scanf(" %99[^\n]", frase);
    
    for (palavra = strtok(frase, " "); palavra != NULL; palavra = strtok(NULL, " ")){
        if (strcmp(palavra, "de") == 0){
            cont++;
        }
    }
    
    printf("\n\nA palavra 'de' aparece %d vezes na frase.", cont);
    
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Usando strtok fica fácil:

 

#include <stdio.h>
#include <string.h>

int main()
{
    char frase[100], p_busca[100], *palavra;
    int cont=0;
    
    printf("Digite uma frase qualquer em letras minusculas: ");
    scanf(" %99[^\n]", frase);
    printf("Digite uma palavra qualquer em letras minusculas: ");
    scanf(" %99s", p_busca);
    
    for (palavra = strtok(frase, " "); palavra != NULL; palavra = strtok(NULL, " ")){
        if (strcmp(palavra, p_busca) == 0){
            cont++;
        }
    }
    
    printf("\n\nA palavra '%s' aparece %d vezes na frase.", p_busca, cont);
    
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

2 minutos atrás, MatheusINF disse:

@isrnick Cara realmente com o strtok() , consigo fazer o resto da lista tranquilo , uma pena eu não saber dele antes ahahahaha, muito obrigado cara ^^

Não sei se deu pra entender como ele funciona, é meio complicado, tem que passar a string como parâmetro na primeira chamada da função, e depois passar NULL como parâmetro nas chamadas seguintes da função para continuar procurando do ponto onde parou na mesma string que chamou na primeira vez.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!