Afficher un mot présent dans plusieurs fichier
varalax
Messages postés
66
Statut
Membre
-
varalax Messages postés 66 Statut Membre -
varalax Messages postés 66 Statut Membre -
Bonjour,
Je suis en train de créer un robot indexeur en language C et j'ai un problème dans mon affichage.
Ce que je veux afficher: Lorsque le mot est présent dans plusieurs fichiers différents l'affichage doit se faire de cette manière dans mon index:
"love = richard_II.txt 200, 300, 400 | liliade.txt 100, 500, 800."
Respectivement:
love->mot trouvé
...txt -> le fichier ou le mot a été trouvé
200,300.. -> position du mot trouvé.
Ce que j'ai après avoir codé de longues heures :
"love = richard_II.txt 200,300,400,100,500,800. "
J'espère que ça suffira a me venir en aide.
Cordialement
Je suis en train de créer un robot indexeur en language C et j'ai un problème dans mon affichage.
Ce que je veux afficher: Lorsque le mot est présent dans plusieurs fichiers différents l'affichage doit se faire de cette manière dans mon index:
"love = richard_II.txt 200, 300, 400 | liliade.txt 100, 500, 800."
Respectivement:
love->mot trouvé
...txt -> le fichier ou le mot a été trouvé
200,300.. -> position du mot trouvé.
Ce que j'ai après avoir codé de longues heures :
"love = richard_II.txt 200,300,400,100,500,800. "
J'espère que ça suffira a me venir en aide.
Cordialement
A voir également:
- Afficher un mot présent dans plusieurs fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
Bonjour
Pense à utiliser la coloration syntaxique.
J'espère que ça suffira a me venir en aide.non, si tu ne postes pas le code comment veux tu que l'on puis voir ce qui ne va pas...
Pense à utiliser la coloration syntaxique.
Tout d'abord la structure :
typedef struct index // Déclaration de struct { char nom_index[SMAX]; char nom_fichier[SMAX]; int tab_pos[150]; int nbpos; char nom_fichier2[SMAX]; } INDEX ;Ensuite le main
int main () { int taille=0, doc=1, tab[500]; INDEX P[tailleMax]; char tmp[tailleMax],nom_fichier[50]; char mot_chercher[30]; FILE* fichier = NULL; FILE* fichier2 = NULL; FILE* corpus = NULL; corpus = fopen("Corpus.txt","r"); // ouverture du fichier qui contiendra le nom des fichiers à indexer if(corpus == NULL) // test ouverture { printf("Erreur dans l'ouverture du fichier"); return -1; } fichier2 = fopen("index.txt", "w"); // ouverture index if(fichier2 == NULL) // test ouverture { printf("Erreur dans l'ouverture du fichier"); return -1; } printf("Recherche : "); scanf("%s", mot_chercher); do { doc = recup_nom_doc(corpus, nom_fichier); // on récupère le nom du doc a ouvrir a partir du corpus if(doc == 1) // si on a pas atteint la fin du corpus { fichier = fopen(nom_fichier, "r");// on ouvre le fichier if(fichier == NULL) // test ouverture { printf("Erreur dans l'ouverture du fichier"); return -1; } lire_fichier(P, &taille, fichier, tmp, nom_fichier); fclose(fichier); } }while(doc == 1); afficher(fichier2, P, taille, tab,tmp); utilisateur(P, fichier2, taille, mot_chercher, tmp); // Fermeture des fichier fclose(fichier2); fclose(corpus); return 0; }Enfin la partie ou j'affiche dans mon fichier index.txt :
void afficher(FILE *fic_out, INDEX *P, int taille, int *tab, char *tmp) { int i, j, k, Nb; for(i=0; i<taille; i++) { if (strcmp(tmp, P[i].nom_index) == 0) { fprintf(fic_out, "%s = %s", P[i].nom_index, (P+i)->nom_fichier); Nb = P[i].nbpos; for(j=0; j<Nb; j++) { fprintf(fic_out, " %d", P[i].tab_pos[j]); } fprintf(fic_out, "\n"); } else { fprintf(fic_out, "\n%s = %s : ", (P+i)->nom_index, (P+i)->nom_fichier); // on écrit le tableau de structure dans l'index. Nb = P[i].nbpos; for(j=0; j<Nb; j++) { fprintf(fic_out, "%d, ", ((P+i)->tab_pos[j])); } for(k=0; k<=tab[i]; k++) { fprintf(fic_out, " | %s : ", (P+i+k)->nom_fichier); Nb = (P+i+k)->nbpos; fprintf(fic_out, "%d, ", ((P+i+k)->tab_pos[k])); } } } }