2017-05-24 11 views
0

je voudrais vérifier quand je vais sur tous les fichiers sur le répertoire, si l'un des fichiers/éléments sur le répertoire est un dossier (un autre répertoire)Vérifiez si le répertoire est produit dans le dossier C

Code

Je commencé à partir (en utilisant dirent.h):

DIR *dir; 
struct dirent *ent; 
if ((dir = opendir ("c:\\src\\")) != NULL) { 
    /* print all the files and directories within directory */ 
    while ((ent = readdir (dir)) != NULL) { 
    if (ent.is_folder()) // here is what I want to implement 
     printf ("Folder: %s\n", ent->d_name); 
    else 
     printf("File %s\n", ent->d_name); 
    } 
    closedir (dir); 
} else { 
    /* could not open directory */ 
    perror (""); 
    return EXIT_FAILURE; 
} 
+0

quel est le problème que vous avez obtenu? –

+0

il n'y a pas de fonction ent.is_folder() vous savez .. c'est c. Si vous voyez que je veux vérifier si ent (qui est lu à partir du répertoire) est un répertoire (dossier) ou un fichier –

+0

jeter un oeil à https://stackoverflow.com/questions/4553012/checking-if-a-file -est-un-répertoire-ou-juste-un-fichier –

Répondre

1

rEADDIR() retourne une structure, dans laquelle vous avez une variable pour vérifier si votre répertoire contient des fichiers et/ou répertoires. Voici la structure:

struct dirent { 
    ino_t   d_ino;  /* numéro d'inœud */ 
    off_t   d_off;  /* décalage jusqu'à la dirent suivante 
*/ 
    unsigned short d_reclen; /* longueur de cet enregistrement */ 
    unsigned char d_type;  /* type du fichier */ 
    char   d_name[256]; /* nom du fichier */ 
}; 

Alors vous utiliserez dans votre code: ent-> d_type pour accéder à cette variable. Puis avec le drapeau DT_DIR vous allez vérifier s'il s'agit d'un répertoire, et s'il s'agit d'un fichier avec le drapeau DT_REG.

Le code ci-dessous fonctionne:

DIR *dir; 
struct dirent *ent; 

if ((dir = opendir ("c:\\src\\")) != NULL) 
{ 
    /* print all the files and directories within directory */ 
    while ((ent = readdir (dir)) != NULL) { 
     if (ent->d_type == DT_DIR)// here is what I want to implement 
      printf ("Folder: %s\n", ent->d_name); 
     else if (ent->d_type == DT_REG) 
      printf("File %s\n", ent->d_name); 
    } 
    closedir (dir); 
} 
else 
{ 
/* could not open directory */ 
    perror (""); 
     return EXIT_FAILURE; 
}