comment indexer tous les fichiers d'un repertoire en c
soninkehustler
Messages postés1Date d'inscriptionjeudi 3 juin 2010StatutMembreDernière intervention 3 juin 2012
-
3 juin 2012 à 19:57
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 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;
}
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 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/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question