Bonjour à tous,

Voici mon souci, je recupere dans un tableau les noms de fichier d'un dossier grace a la structure dirent et à la fonction scandir

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
struct dirent **namelist;
char** dossier;  /* pour stocker les noms de fichiers*/
char directory[256]; /*contient le chemin du repertoire*/
int n,m,size;
 
// recuperation du nom de fichiers .com
 
  n = scandir(directory, &namelist, 0, alphasort);
   if (n < 0)
   {
     perror("scandir failed");
     exit(EXIT_FAILURE);
   }
 
  dossier=(char**)malloc((n-2)*sizeof(char*));  
/* les fichiers . et .. ne m'interressent pas*/
  m=0;
 
   for(int i=0; i<n; i++) 
   {
     size=strlen(namelist[i]->d_name);
/*je ne veux recuperer que les noms de fichiers portant l'extension .com les fichiers . et .. ne m'interrressent pas non plus*/
     if( (namelist[i]->d_name)[0] != '.' && (namelist[i]->d_name)[size-1]=='m' && (namelist[i]->d_name)[size-2]=='o' && (namelist[i]->d_name)[size-3]=='c')
     {
       dossier[m]=(char*)malloc(size*sizeof(char));
       dossier[m]=namelist[i]->d_name;
       free (namelist [i]);
       m++; /* au final m traduira le nombre de fichiers
     }
   }
 
  free (namelist);
 
// affichage pour verification
 
  for (int i=0; i<m; i++)
  {
   printf("\t%s\n",dossier[i]);
  }
jusqu'ici tout se passe bien et l'affichage est impécable.
J'ai récupere l'ensemble et uniquement ceux là, des noms de fichiers du repertoire dont le chemin est spécifié dans directory.
Ils sont contenus dans dossier et m traduit le nombre de ces fichiers ...

Je cherche desormais à effectuer une vérification sur ces fichiers, c'est a dire verifier la presence d'un mot clé à l'interieur.Je crée donc une fonction verifie dont voici le prototype
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
int verifie (const char*);
en lui passant pour argument le nom du fichier à vérifier concatené au nom du dossier

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
char buffer[512];
 
for (int i=0; i<m; i++)
{
 strcpy(buffer, directory);
 strcat(buffer,"/");
 strcat(buffer, dossier[i]);
 
 printf("verification de %s\n",dossier[i]);
}
et j'ai un gros plantage, des caracteres speciaux apparaissent ... !?
De ce fait impossible d'ouvrir le fichier et de vérifier quoique ce soit.

Est ce que quelqu'un à déja eu ce problème ?
Et comment l'a t-il résolu ?