Contando a quantidade de palavras de um arquivo texto
Publicado por Perfil removido 18/10/2007
[ Hits: 18.260 ]
Esse programa conta a quantidade de palavras de um arquivo texto, imprimindo via DOS o número de vezes em que cada uma se repete.
Para executá-lo, deve-se digitar o nome do arquivo executável gerado pelo compilador C mais o nome do arquivo texto, como demonstrado abaixo:
nomedoexecutável nomedoarquivo.txt
Obrigado.
Adelman.
/*Programa que conta quantas palavras possui um texto, e imprime quantas vezes cada uma se repete.*/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <string.h> //Declaração da estrutura usada no programa. typedef struct palavras{ char palavra[100]; int quantidade; struct palavras *prox; }palavras; int main (int argc, char *argv[]){ FILE *fp; palavras *primeiro=NULL, *aux=NULL, *percorre=NULL; char string[100], ch[0]; int total=0; //Estrutura condicional para prevenir um caso em que o nome do arquivo não seja especificado. if (argc!=2){ printf("Digite o nome do arquivo.\n"); exit(1); } //Estrutura condicional para imprimir uma mensagem, caso a abertura do arquivo não seja possível. if ((fp=fopen(argv[1],"r+"))==NULL){ printf("O Arquivo nao pode ser aberto.\n"); exit(1); } //Algoritmo super trabalhoso para escrever um espaço no final do arquivo para uso posterior. while(!feof(fp)){ getc(fp); if(feof(fp)){ putc(' ',fp); break; } } //Função para trazer o cursor ao início do arquivo. rewind(fp); //Eliminando a possibilidade de contar espaços, /n 's e /t 's no início do texto strcpy(string,""); do{ ch[0] = getc(fp); ch[1]='{FONTE}'; }while(ch[0]==' '||ch[0]=='\n'||ch[0]=='\t'); //Lendo a primeira palavra do arquivo. while(1){ strcat(string,ch); ch[0]= getc(fp); ch[1]='{FONTE}'; if(ch[0]==' '||ch[0]=='\n'||ch[0]=='\t') break; } //Guardando a primeira palavra em um nó de uma lista encadeada. primeiro= (palavras*)malloc(sizeof(palavras)); strcpy(primeiro->palavra,string); primeiro->quantidade=0; primeiro->prox=NULL; //Algoritmo para guardar palavra em um nó da lista encadeada. while(!feof(fp)){ if((ch[0]==' ')||(ch[0]=='\n')||(ch[0]=='\t')){ for(percorre=primeiro; percorre!=NULL; percorre=percorre->prox){ if(strcmp(string,percorre->palavra)==0){ percorre->quantidade++; strcpy(string,""); break; } if(percorre->prox==NULL && strcmp(string,"")!=0){ aux= primeiro; primeiro= (palavras*)malloc(sizeof(palavras)); primeiro->quantidade= 1; strcpy(primeiro->palavra, string); primeiro->prox= aux; strcpy(string,""); } } }else{ strcat(string,ch); } ch[0]= getc(fp); } //Imprimindo todas as palavras e suas respectivas quantidades em que aparecem no texto. for (percorre=primeiro; percorre!=NULL; percorre= percorre->prox){ total= total + percorre->quantidade; printf("%s - %d\n", percorre->palavra, percorre->quantidade); } //Imprimindo o número de palavras contidas no texto. printf("\nO texto cont%cm %d palavras.\n", 130,total); fclose(fp); }
Números de caracteres em arquivo
Programa para inversão de colunas
Agenda (fones, compromissos, aniversários) em C usando arquivos binários
Programa CONSULTA/ PESQUISA/ ADICIONA/ EXCLUI registros em arquivos
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhorando a precisão de valores flutuantes em python[AJUDA] (7)
Vou voltar moderar conteúdos de Dicas e Artigos (1)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta