Contando a quantidade de palavras de um arquivo texto
Publicado por Perfil removido 18/10/2007
[ Hits: 18.279 ]
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); }
Listar arquivos e diretórios com suas propriedades
Alfabeto escrito 30 vezes e operação XOR
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)