Here is a revised version of the directory lister found above
(see Simple Program to List a Directory). Using the scandir
function we
can avoid the functions which work directly with the directory contents.
After the call the returned entries are available for direct use.
#include <stdio.h> #include <dirent.h>
static int one (const struct dirent *unused) { return 1; } int main (void) { struct dirent **eps; int n; n = scandir ("./", &eps, one, alphasort); if (n >= 0) { int cnt; for (cnt = 0; cnt < n; ++cnt) puts (eps[cnt]->d_name); } else perror ("Couldn't open the directory"); return 0; }
Note the simple selector function in this example. Since we want to see
all directory entries we always return 1
.