#include <dirent.h>
int alphasort( const struct dirent ** d1, const struct dirent ** d2 );
La fonction alphasort est une fonction de comparaison prévue pour être passée à scandir. Elle trie les entrées de dossier à partir du champ d_name.
La fonction renvoie une valeur négative, nulle ou positive selon que la première entrée doit être classée avant, au même niveau, ou après la seconde.
Le tri tient compte de la locale courante. En pratique, il correspond à un tri alphabétique adapté aux conventions de classement de l'environnement d'exécution.
Le programme suivant utilise directement alphasort comme fonction de comparaison pour scandir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#define _POSIX_C_SOURCE 200809L #include <dirent.h> #include <stdio.h> #include <stdlib.h> int main(void) { struct dirent ** entries = NULL; int count = scandir(".", &entries, NULL, 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; } |
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 :