RAD Studio
ContentsIndex
PreviousUpNext
opendir, wopendir

Header File 

dirent.h  

Category 

Directory Control Routines 

Prototype 

DIR *opendir(const char *dirname); 

wDIR *wopendir(const wchar_t *dirname); 

Description 

Opens a directory stream for reading. 

opendir is available on POSIX-compliant UNIX systems. 

The opendir function opens a directory stream for reading. The name of the directory to read is dirname. The stream is set to read the first entry in the directory. 

A directory stream is represented by the DIR structure, defined in dirent.h. This structure contains no user-accessible fields. Multiple directory streams can be opened and read simultaneously. Directory entries can be created or deleted while a directory stream is being read. 

Use the readdir function to read successive entries from a directory stream. Use the closedir function to remove a directory stream when it is no longer needed. 

Return Value 

On success, opendir returns a pointer to a directory stream that can be used in calls to readdir, rewinddir, and closedir.  

On error (If the directory cannot be opened), the functino returns NULL and sets the global variable errno to

ENOENT 
The directory does not exist 
ENOMEM 
Not enough memory to allocate a DIR object 

Example

 /* opendir.c - test opendir(), readdir(), closedir() */
 
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
 
void scandir(char *dirname)
{
   DIR *dir;
   struct dirent *ent;
 
   printf("First pass on '%s':\n",dirname);
   if ((dir = opendir(dirname)) == NULL)
   {
     perror("Unable to open directory");
     exit(1);
   }
   while ((ent = readdir(dir)) != NULL)
     printf("%s\n",ent->d_name);
 
   printf("Second pass on '%s':\n",dirname);
   rewinddir(dir);
   while ((ent = readdir(dir)) != NULL)
     printf("%s\n",ent->d_name);
   if (closedir(dir) != 0)
     perror("Unable to close directory");
}
 
void main(int argc,char *argv[])
{
   if (argc != 2)
   {
     printf("usage: opendir dirname\n");
     exit(1);
   }
   scandir(argv[1]);
   exit(0);
}

Portability

 
POSIX 
Win32 
ANSI C 
ANSI C++ 
opendir 
 
 
wopendir 
 
 
 
 
Copyright(C) 2008 CodeGear(TM). All Rights Reserved.
What do you think about this topic? Send feedback!