Tamanini Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 Olá pessoal.Existe algum função em C que conte o total de palavras?Imagino que não, então o que eu pensei era contar através de algum delimitador, por exemplo o espaço em branco? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Schouery (VidaGeek) Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 (editado) 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 devolvidaso 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 copianão se esqueça de dar #include <string.h>Para resolver seu probema basta fazer algo do tipoint conta(char string[]) { int i = 1; if(strtok(string," \t") == NULL) return 0; while(strtok(NULL, " \t")) i++; return i; } Editado Abril 27, 2007 por Rafael Schouery (VidaGeek) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonas de Abreu Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 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 brancosSe quiser coloco em C depois aqui no forum. Mas é um bom exercicio pra praticar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tamanini Postado Abril 27, 2007 Autor Denunciar Share Postado Abril 27, 2007 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); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Schouery (VidaGeek) Postado Abril 27, 2007 Denunciar Share Postado Abril 27, 2007 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 adicionarif(strtok(vet, " \t") == NULL) printf("O total de palavras e %d \n", i); else { while ... } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Helder Passos Postado Novembro 15, 2011 Denunciar Share Postado Novembro 15, 2011 ola o post#2 é muito bom eu testei e gostei valeu :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bruce845 Postado Novembro 24, 2011 Denunciar Share Postado Novembro 24, 2011 (editado) é 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 30int 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 Novembro 24, 2011 por bruce845 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Tamanini
Olá pessoal.
Existe algum função em C que conte o total de palavras?
Imagino que não, então o que eu pensei era contar através de algum delimitador, por exemplo o espaço em branco?
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.