Non sarebbe meglio ricorrere a soluzioni portabili quando possibile? :]

dirent.h

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

int main(void)
{
    DIR *dp;
    struct dirent *dir_p;

    dp = opendir(/*directory*/);

    if ( dp == NULL )
       exit(1);

    while( ( dir_p = readdir(dp) ) != NULL )
           printf("%s\n", dir_p -> d_name);

    closedir(dp);

    return 0;
}