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;
}