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é

Fonction scandir (POSIX)

Entête à inclure

#include <dirent.h>

Fonction scandir

int scandir( const char * dir, struct dirent *** namelist, int (*sel)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **) );

La fonction scandir lit les entrées d'un dossier et construit un tableau de pointeurs vers des structures struct dirent. Elle peut aussi filtrer les entrées et les trier.

Paramètres

Valeur de retour

En cas de succès, la fonction renvoie le nombre d'entrées placées dans namelist. En cas d'erreur, elle renvoie -1 et positionne errno.

Les entrées allouées par scandir, ainsi que le tableau lui-même, doivent être libérés avec free.

Exemple de code

Le programme suivant charge les entrées du dossier courant, ignore les noms commençant par un point, puis trie les résultats avec alphasort.

 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 
#define _POSIX_C_SOURCE 200809L

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

static int visibleOnly(const struct dirent * entry) {
    return entry->d_name[0] != '.';
}

int main(void) {

    struct dirent ** entries = NULL;
    int count = scandir(".", &entries, visibleOnly, alphasort);
    if (count == -1) {
        perror("scandir");
        return EXIT_FAILURE;
    }

    for (int i = 0; i < count; ++i) {
        puts(entries[i]->d_name);
        free(entries[i]);
    }

    free(entries);
    return EXIT_SUCCESS;
}
Parcours filtré et trié avec scandir

Sujets connexes

alphasort
free
opendir
readdir
struct dirent


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