Ir para conteúdo
Fórum Script Brasil
  • 0

Função Para Verificar O Total De Palavras De Uma Frase?


Tamanini

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 0

Talvez o jeito mais fácil de fazer isso seja com o strtok, que devolve cadeias que estão delimitadas por algum caracter.

por exemplo

strtok(s, " \t")

devolve a primeira palavra da string s.

para as outras chamadas você não passa a string, apenas NULL, ou seja:

strtok(NULL, " \t")

isso vai devolver a segunda palavra. Se você chamar denovo vai devolver a terceira e dai por diante.

Detalhes importantes:

" \t" garante que os delimitadores são espaços ' ' e o tab.

quando strtok devolver NULL significa que todas as palavras já foram devolvidas

o strtok "estraga" a sua string, colocando onde encontra delimitadores portanto cuidado se for usar a frase original, qualquer coisa faça um strcpy(copia,s) e rode o strtok na copia

não se esqueça de dar #include <string.h>

Para resolver seu probema basta fazer algo do tipo

int conta(char string[])
{
  int i  = 1;
  if(strtok(string," \t") == NULL)
     return 0;
  while(strtok(NULL, " \t"))
       i++;
   return i;
}

Editado por Rafael Schouery (VidaGeek)
Link para o comentário
Compartilhar em outros sites

  • 0

Se voce apenas quer contar as palavras, da pra fazer de um jeito mais eficiente, embora um pouco mais complicado:

Enquanto não encontrar \ 0

1-Percorra a frase ate encontrar caracteres não brancos(que não são espaco, tab, \r, \n e \ 0)

2-incremente contadora de palavras

3-Percorra a frase ate encontrar caracteres brancos

Se quiser coloco em C depois aqui no forum. Mas é um bom exercicio pra praticar.

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei assim, mas está dando erro quando executo:

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

void main(void){
int i=0;
char vet[100];

    printf("Digite uma frase:\n");
    gets(vet);     /* lê a frase digitada e armazena na variável vet, 
                   incluíndo caracteres em branco */
    // "minha primeira frase"     total de palavras deverá ser 3

    while(strtok(NULL, " \t"))
       i++;


    printf("O total de palavras e %d \n", i);
}

Link para o comentário
Compartilhar em outros sites

  • 0

você esqueceu de fazer aquela primeira chamada do strtok que passa a string ao invés de NULL.

Portanto ele não sabe qual string você quer separar...

basta adicionar

if(strtok(vet, " \t") == NULL)
  printf("O total de palavras e %d \n", i);
else
{
  while ...
}

Link para o comentário
Compartilhar em outros sites

  • 0

é só usar a função strlen()! (inclua a biblioteca string.h ou cstring em C++)

strlen(nome_da_variável)
Protótipo da strlen:
size_t strlen(const char *str)
Ela conta e retorna o número de caracteres em uma string (sem contar o '\ 0'). Para contar a partir de algum caracter em específico, localize a posição dele no vetor e conte a partir dele! A função strstr que usei poderá lhe ajudar nessa tarefa. Ela retorna o ponteiro da posição do vetor que o caracter está e retorna 0 caso não encontre a palavra desejada. Ela localiza uma string dentro da outra. (inclua a biblioteca string.h ou cstring em C++) Uso:
strstr(nome_do_vetor,palavra que você quer procurar)
Protótipo da strstr:
char *strstr(char *str1,const char *str2)

Ex.:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h> // Biblioteca para a função getch().
#define MAX_NOME 30

int main(int argc,char **argv)
{
char *exemplo="Bruce";
printf("Esta palavra contem %d caracteres.\n",strlen(strstr(exemplo,"u")));
getch();
return EXIT_SUCCESS;
}
[/codebox]

Espero ter ajudado!

Usem a BBCode "codebox" ao invés de "code" para postar os códigos!

Editado por bruce845
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...