[C] Arborescence de dossier

Résolu/Fermé
For the birds - 26 nov. 2009 à 14:51
 For the birds - 26 nov. 2009 à 15:58
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

Pilow Messages postés 400 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 23 décembre 2009 71
26 nov. 2009 à 15:06
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
For the birds
26 nov. 2009 à 15:58
merci ;)
0