
		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?