Afficher un mot présent dans plusieurs fichier

Fermé
varalax Messages postés 61 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 28 juillet 2016 - 3 janv. 2015 à 16:43
varalax Messages postés 61 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 28 juillet 2016 - 4 janv. 2015 à 15:02
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
A voir également:

1 réponse

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
3 janv. 2015 à 17:08
Bonjour

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.
0
varalax Messages postés 61 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 28 juillet 2016
4 janv. 2015 à 15:02
Voila une partie de mon code
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]));
				
				
			}
	}
}
}	
0