[C] Arborescence de dossier

Résolu
For the birds -  
 For the birds -
Bonjour,
J'ai un petit soucis en de développement en C
Je cherche à parcourir récursivement le contenu d'un d'un répertoire
Je prevois déjà un soucis avec . .. mais la n'est pas le problème
je ne trouve pas comment déterminer si une entrer est un fichier ou un répertoire ....

actuellement mon code ressemble à ceci:
#include <stdio.h>
#include <dirent.h>

int main(void)
{
DIR * rep = opendir(".");

if (rep != NULL)
{
struct dirent * ent;

while ((ent = readdir(rep)) != NULL)
{
printf("File %s\n", ent->d_name);
}

closedir(rep);
}

return 0;
}
D'avance merci

2 réponses

  1. Pilow Messages postés 410 Statut Membre 71
     
    Bonjour

    Dans ta structure dirent, aide toi du "unsigned char d_type"

    Compare le avec des masques binaires, tu les trouvera dans le .h correspondant je crois bien

    Il t'indiquera le type de fichier

               if (ent->d_type & DT_UNKNOWN) printf("\t\tUNKNOWN");
               if (ent->d_type & DT_DIR)     printf("\t\tDIRECTORY");
               if (ent->d_type & DT_LNK)     printf("\t\tLINK");
               if (ent->d_type & DT_FIFO)     printf("\t\tPIPE");
    

    Par exemple

    http://kafka.fr.free.fr/docs/prog_syst_linux-html/html/slide_28.html
    1