Lister les fichiers d'un dossier
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
#include <malloc.h>
DIR * ouvrirRepertoire(char *nomRepertoire)
{
DIR *dip;
if ((dip = opendir(nomRepertoire)) == NULL)
{
perror("opendir");
}
return dip;
}
int fermerRepertoire(DIR *dip)
{
if (closedir(dip) == -1)
{
perror("closedir");
return 0;
}
return 1;
}
void parcourirRepertoire(char *nomRepertoire, char *nomFichier)
{
DIR *dip;
struct dirent *dit;
dip = ouvrirRepertoire(nomRepertoire);
while ((dit = readdir(dip)) != NULL)
{
if (dit->d_type == 4 && strcmp(dit->d_name, ".") > 0 && strcmp(dit->d_name, "..") > 0)
{
char * chemin = NULL;
asprintf(&chemin, "%s%s%s", nomRepertoire, "/", dit->d_name);
printf("\nSous rep : %s", chemin);
parcourirRepertoire(chemin, nomFichier);
}
if (dit->d_type == 8)
{
if (strcmp(nomFichier, dit->d_name) == 0)
{
char * chemin = NULL;
asprintf(&chemin, "%s%s%s", nomRepertoire, "/", dit->d_name);
printf("\nFichier trouv�, chemin : %s", chemin);
}
}
}
fermerRepertoire(dip);
}
int main(int argc, char *argv[])
{
if (argc < 3){
printf("Usage: %s <repertoire>\n", argv[0]);
return 0;
}
parcourirRepertoire(argv[1], argv[2]);
printf("\n");
return 1;
}