#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 DIR *dir;
 struct dirent *dirzeiger;

 if(argc != 2)
  {
   fprintf(stderr,"Benutzung : %s Directory\n",argv[0]);
   exit (1);
  }

/*Wir oeffnen ein Verzeichnis mit opendir*/
 if((dir=opendir(argv[1])) == NULL)
  {
   fprintf(stderr,"Fehler bei opendir.....\n");
   exit (1);
  }

/*Wir lesen aus unserem Verzeichnis mit readdir*/
 while((dirzeiger=readdir(dir)) != NULL)
     printf("%s\n",(*dirzeiger).d_name);

/*Wir setzten den "Lesezeiger" dir wieder an den Anfang*/
 rewinddir(dir);

/*Wir lesen erneut das Verzeichnis*/
 while((dirzeiger=readdir(dir)) != NULL)
     printf("%s\n",(*dirzeiger).d_name);

/*Wir beenden und schließen unseren "Lesezeiger" dir*/
 if(closedir(dir) == -1)
     printf("Fehler beim Schließen von %s\n",argv[1]);

 return 0;
}