#include <dirent.h>
struct dirent * readdir( DIR * dirp );
La fonction readdir lit l'entrée suivante dans le flux de dossier passé en paramètre. Elle renvoie un pointeur vers une structure struct dirent contenant notamment le nom de cette entrée.
La fonction renvoie un pointeur vers une structure struct dirent. Si la fin du dossier est atteinte, elle renvoie NULL sans modifier errno. En cas d'erreur, elle renvoie aussi NULL, mais positionne errno.
readdir désigne une zone gérée par l'implémentation. Vous ne devez pas la libérer avec free, et son contenu peut être remplacé lors de l'appel suivant sur le même flux.Le programme suivant montre la technique classique permettant de différencier une fin normale de lecture d'une erreur.
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 30 31 |
#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("%s\n", entry->d_name); } if (errno != 0) { perror("readdir"); closedir(directory); return EXIT_FAILURE; } closedir(directory); 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 :