comment indexer tous les fichiers d'un repertoire en c

soninkehustler Messages postés 1 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 3 juin 2012 - 3 juin 2012 à 19:57
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 4 juin 2012 à 10:39
Bonjour
Dans le cadre d'un projet j'essaye de mettre en place un moteur d'indexation des fichiers d'un repertoire en langage C.Mon souci est que j'arrive a ouvrir mon repertoire et à lister les fichiers mais j'arrive pas a acceder au contenu des fichiers .
le code que j'utilise est le suivant il compile mais j'ai un index vide aidez moi svp :
s_index make_index(int index_size, char *ad){ 
 int i; 
 int nbl = 1; 
 mot t_mot; 
 s_index index; 
 
 char temp[40], *tpm, c_tpm, c; 
  
 FILE *fic; 
 DIR * rep = opendir(ad); 
  
 index_taille = 0; 
  char fn[256]; 
  
 //allocation de l'index 
 index = create_index(index_size); 
 
 if (rep != NULL){ 
 	struct dirent * ent; 
 	while ((ent = readdir(rep)) != NULL){  
 	//puts("ERREUR : le dossier existe" ); 
 	printf("%s\n", ent->d_name); 
   if(strcmp(ent->d_name,"." )==0|| strcmp(ent->d_name,".." )==0){ 
   	continue; 
   } 
   snprintf(fn,sizeof fn,ad,ent->d_name); 
   if ((fic fopen(fn, "r" )) NULL){ 
     puts("ERREUR : le fichier n'existe pas" ); 
     return NULL; 
   	} 
  
   else{ 
     
   	while ((c = fgetc(fic))!=EOF){ 
     i = 0; 
     printf("okkkk\n" );  
     while (!is_sep(c)){ 
     	// suppression des accents et transformation en minuscule 
     	c_tpm = tolower(c);    
     	temp[i] = c_tpm; 
     	c = fgetc(fic); 
     	i++;printf("okkkk\n" );  
     } 
 
     temp[i] = '\0'; 
  
     if (temp[0] != '\0'){ 
     	tpm = (char *)malloc(strlen(temp)); 
     	strcpy(tpm,temp); 
   
     } 
     else tpm = NULL;   
     if (tpm != NULL){ 
     	t_mot = create_mot(tpm, nbl); 
     	if(index->tab_size == 26) 
       insere_mot(&index->tab[tpm[0]-'a'], t_mot, &index); 
     	else 
       insere_mot(&index->tab[0], t_mot, &index); 
     } 
     if (c == '\n')  
     	nbl++; 
   	} 
   } 
 	} 
 puts("les fichiers ont bien ete indexe" ); 
 } 
  
 return index; 
}

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 juin 2012 à 10:39
Bonjour.

(c = fgetc(fic))!=EOF)

J'espère que tu ne comptes pas lire les fichiers caractère par caractère ! Sinon, tu va obtenir des performances désastreuses...
Lis plutôt un bloc avec fread, ça ira bien plus vite.

un index vide

As-tu vérifié que c'est bien la lecture de fichier qui ne fonctionne pas ? Ça pourrait très bien être ton calcul d'index.
As-tu lancé un debugger sur ton code ?

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous