Afficher un mot présent dans plusieurs fichier

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

1 réponse

  1. Utilisateur anonyme
     
    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
    1. varalax Messages postés 66 Statut Membre
       
      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