crystiano
(usa Sabayon)
Enviado em 02/06/2009 - 22:00h
olá pode me ajudar no seguite codigo
#include<stdio.h>
#include <malloc.h>
#include <string.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define M_LEITURA "r"
#define M_NOVO "w"
/*definição do tipo noLista */
typedef struct noLista{
char palavra[30];
int ocorrencias;
struct noLista* prox;
}noLista;
/*definição do tipo Lista: ponteiro para noLista */
typedef noLista * Lista;
Lista listaPrincipal = NULL;
void verificaLista(Lista *l, char entrada[30]);
int lePalavras(FILE *p);
int eh_separador(char c);
FILE * abreArquivo(char *m);
void imprimeLista(Lista l);
char* toLowerCase(char *str);
/* Função que Abre um arquivo sendo passado seu modo de abertura por
* meio do parametro m. Use os modos
* definidos no programa. Retorna o ponteiro para o arquivo aberto FILE */
FILE * abreArquivo(char *m){
FILE *p;
char nomeArq[30];
printf("Informe o nome do arquivo:");
scanf("%s",nomeArq);
p = fopen(nomeArq,M_LEITURA);
return p;
}
int lePalavras(FILE *p){
char c;
char palavra[30];
int i=0;
while(!feof(p)){
c = fgetc(p);
if (c==EOF){
return 1;
}
else{
printf("%c",c);
if(!eh_separador(c)) {
palavra[i] = c;
i++;
}
else{
verificaLista(&listaPrincipal, palavra);
i = 0;
}
}
}
return 0;
}
void verificaLista(Lista *l, char entrada[30]){
if (*l == NULL) {
*l = malloc(sizeof(noLista));
strcpy((*l)->palavra, entrada);
(*l)->ocorrencias = 1;
(*l)->prox = NULL;
}
else{
if(!strcmp(entrada,(*l)->palavra)){
(*l)->ocorrencias = (*l)->ocorrencias + 1;
}
else{
verificaLista(&((*l)->prox),entrada);
}
}
}
/* Função que verificar se um caractere é
* um separador. Retorna TRUE (1) se é separador ou (FALSE) caso c ontrario.
* Incluir aqui todos os separadores de texto */
int eh_separador(char c){
if ((c ==' ')|| (c=='\n') || (c=='\t') || (c=='.') || (c==',') || (c==':') ||
(c=='!') || (c=='?') || (c==';') || (c=='(') || (c==')') ){
return TRUE;
}
return FALSE;
}
/*
* Imprime a lista completa
* */
void imprimeLista(Lista l){
while (l != NULL) {
printf("\n************************************\n");
printf("Palavra: %s\n", l->palavra);
printf("Ocorrencia: %d\n", l->ocorrencias);
l=l->prox;
}
}
int main(){
FILE *pa;
fflush(stdin);
pa = abreArquivo(M_LEITURA);
fflush(stdin);
if(pa==NULL){
printf("\nErro ao Abrir arquivo texto.\n");
return 0;
}
lePalavras(pa);
imprimeLista(listaPrincipal);
fclose(pa);
return 1;
}
eh um programa q tem de conta todas as ocorrencias de cada palavra,
nas na ora de imprimir o texto
"teste tem de imprimir cada ocorrencia teste imprimir crystiano trabalho IFES pro
gramaþÒo teste programaþÒo crystiano teste 123456789
abc acb abc acb teste 123456789"
ELE IMPRIME
informe o nome do arquivo:a.txt
teste tem de imprimir cada ocorrencia teste imprimir crystiano trabalho IFES pro
gramaþÒo teste programaþÒo crystiano teste 123456789
abc acb abc acb teste 123456789
************************************
Palavra: teste´┴wdz├w;´┴w3
Ocorrencia: 1
************************************
Palavra: temte´┴wdz├w;´┴w3
Ocorrencia: 1
************************************
Palavra: demte´┴wdz├w;´┴w3
Ocorrencia: 1
************************************
Palavra: imprimirdz├w;´┴w3
Ocorrencia: 1
************************************
Palavra: cadaimirdz├w;´┴w3
Ocorrencia: 1
************************************
Palavra: ocorrencia├w;´┴w3
Ocorrencia: 1
************************************
Palavra: testeencia├w;´┴w3
Ocorrencia: 1
************************************
Palavra: imprimiria├w;´┴w3
Ocorrencia: 1
************************************
Palavra: crystianoa├w;´┴w3
Ocorrencia: 1
************************************
Palavra: trabalhooa├w;´┴w3
Ocorrencia: 1
************************************
Palavra: IFESalhooa├w;´┴w3
Ocorrencia: 1
************************************
Palavra: programaþÒow;´┴w3
Ocorrencia: 2
************************************
Palavra: testeamaþÒow;´┴w3
Ocorrencia: 1
************************************
Palavra: crystianoÒow;´┴w3
Ocorrencia: 1
************************************
Palavra: testeianoÒow;´┴w3
Ocorrencia: 1
************************************
Palavra: 123456789Òow;´┴w3
Ocorrencia: 2
************************************
Palavra: abc456789Òow;´┴w3
Ocorrencia: 2
************************************
Palavra: acb456789Òow;´┴w3
Ocorrencia: 2
************************************
Palavra: teste6789Òow;´┴w3
Ocorrencia: 1
POR QUE ESTA OCORRENDO ISSO?