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
jusqu'ici tout se passe bien et l'affichage est impécable.
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]); }
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
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 int verifie (const char*);
et j'ai un gros plantage, des caracteres speciaux apparaissent ... !?
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]); }
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 ?
Partager