structure dirent, fonction scandir
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:
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:
1 2
|
int verifie (const char*); |
en lui passant pour argument le nom du fichier à vérifier concatené au nom du dossier
Code:
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 ... !? :evilred:
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 ?