Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Structure struct dirent (POSIX)

Entête à inclure

#include <dirent.h>

Structure struct dirent

struct dirent {
    ino_t d_ino;
    char  d_name[];
};

La structure struct dirent décrit une entrée lue dans un dossier. POSIX impose au minimum les champs d_ino et d_name.

De nombreux systèmes ajoutent des champs non portables dans cette structure, par exemple d_type sous Linux. Si vous voulez écrire du code POSIX portable, ne basez pas votre logique sur ces champs additionnels.

Exemple de code

Le programme suivant récupère les entrées avec readdir et exploite uniquement les champs garantis par POSIX.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
#define _POSIX_C_SOURCE 200809L

#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {

    DIR * directory = opendir(".");
    if (directory == NULL) {
        perror("opendir");
        return EXIT_FAILURE;
    }

    errno = 0;
    struct dirent * entry;

    while ((entry = readdir(directory)) != NULL) {
        printf("%-20s %ld\n", entry->d_name, (long) entry->d_ino);
    }

    if (errno != 0) {
        perror("readdir");
    }

    closedir(directory);
    return errno == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
Lecture d'une structure struct dirent

Sujets connexes

DIR *
ino_t
readdir
scandir


Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé