const char *XMLParser::getNextTag(){ pos++; const char *s = seekChar(CLOSETAG); pos++; #ifdef NEWLINEFIX //Finxing '\n' after all using HTML tags, if any. //This is not on spec, but's cool //Of course we shall support old DOS too '\r\n' if (data[pos]=='\r') pos++; if (data[pos]=='\n') pos++; #endif return s; };
const char *XMLParser::seekNextTag(){ return seekChar(OPENTAG); };
int main(int argc, char *argv[]){ FILE *arquivo1, *arquivo2; Parvore arvore; PLista lista, lista2, lista3, p, z, y; char carac_text, carac_dicio; char word[2000000]; char word_text[2000000]; char other_word[2000000]; int i = 0, tam = 0, j = 0, lines = 1, k; inicializaArvore(&arvore); inicializaLista(&lista); inicializaLista(&lista2); inicializaLista(&lista3); arquivo1 = fopen(argv[1], "r"); arquivo2 = fopen(argv[2], "r"); //PEGANDO TODAS AS PALAVRAS DO DICIONARIO E INSERINDO NA ARVORE TRIE while((carac_dicio = fgetc(arquivo1)) != EOF){ if(carac_dicio != '\n'){ word[i] = carac_dicio; i++; } else{ word[i] = '\0'; i = 0; inserir_palavra(&arvore, strlen(word), word); } } //LENDO E TRATANDO TODOS OS CARACTERES DO ARQUIVO2 while((carac_text = fgetc(arquivo2)) != EOF) tam++; //criando string com todo o conteudo do texto char string[tam]; rewind(arquivo2); i = 0; while((carac_text = fgetc(arquivo2)) != EOF){ string[i] = carac_text; i++; } string[i] = '\0'; //o texto todo esta nessa string i = 0; for(j = 0; j < tam; j++){ if((seekChar(separadores,string[j])) && (i == 0)){ //j++; continue; } if(seekChar(separadores, string[j])){ word_text[i] = '\0'; strcpy(other_word,word_text); i = 0; for(k = 0; k < strlen(word_text); k++) word_text[k] = tolower(word_text[k]); if(buscar_palavra(arvore, word_text) == 1){ inserir_crescente(&lista, word_text); } else{ inserir_final(&lista2, other_word); } } else{ word_text[i] = string[j]; i++; } } i = 0; for(p = lista; (p != NULL); p = p->prox){ int aux = 1; int number; printf("%s", p->palavra); for(j = 0; j < tam; j++){ if(seekChar(separadores, string[j])){ word_text[i] = '\0'; i = 0; for(k = 0; k < strlen(word_text); k++) word_text[k] = tolower(word_text[k]); if((strcmp(word_text,p->palavra)) == 0){ if (lines != number){ if(aux == 1){ printf(" %d", lines); number = lines; } else{ printf(", %d", lines); number = lines; } aux = 0; } } if(string[j] == '\n'){ lines++; number = lines-1; } } else{ word_text[i] = string[j]; i++; } } printf("\n"); lines = 1; } //imprimir(lista2); for(z = lista2; (z != NULL); z = z->prox){ printf("%s ", z->palavra); //for(y = lista3; (y != NULL); y = y->prox){ buscarMenor(arvore, z->palavra); printf("%s\n", menorpalavra); menorpalavra[0] = '\0'; menor = 100; } }