Contando a quantidade de palavras de um arquivo texto
Publicado por Perfil removido 18/10/2007
[ Hits: 18.461 ]
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);
}
Justificador de texto em 80 colunas
Programa para inversão de colunas
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)









