Programowanie w języku C/C++ » FAQ

Wyświetlanie listy plików z katalogu

  • 2006-05-15 21:34
  • 4 komentarze
  • 2594 odsłony
  • Oceń ten tekst jako pierwszy
Wielu się zastanawia od odczytać listę plików z katalogu, a rzecz jest w sumie prosta:

#include <stddef.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
 
int main (void)
{
  DIR *dp;
  struct dirent *ep;
 
  dp = opendir ("./");
  if (dp != NULL)  
  {
    while (ep = readdir (dp)) puts (ep->d_name);
    (void) closedir (dp);
  } 
  else
  {
    perror ("Nie mozna otworzyc katalogu");
  }
 
  return 0;
}

4 komentarze

elviskk 2009-06-20 21:45

"Error    1    fatal error C1083: Cannot open include file: 'dirent.h': No such file or directory"

Skąd go zaczerpnąć ? Standardowo wydaje się go nie być w składzie VS TeamSuite 2008.. albo nie wiem gdzie go szukać.. ;>

marcinEc 2005-07-20 22:19

To gdzie ma działać? Na twoim komputerze tylko? To po co dajesz taki przykład?

bartosak 2005-07-20 21:27

Przeciez nigdzie nie mowilem ze to ma dzialac wszedzie..

marcinEc 2005-07-20 10:07

Nie takie znowu proste... W standardzie C++ nie ma czegoś takiego jak \"katalog\", wszystko zależy od systemu operacyjnego (Linux: \'/aaa/aa\', Windows: \'C:\\aaa\\aa\').

opendir()/readdir()/closedir() [POSIX, GNU?] nie ma we wszystkich kompilatorach. Twój kod nie działa na, np. MSVC (bo nie ma dirent.h).

Przenośny kod w C++ może używać boost::filesystem.

W C pod Windows można korzystać albo z API (FindFirstFile()/..Next()/..Close()), albo z <io.h> [msvcrt -> _findfirst()/..next()/..close()].

W MinGW-runtime JEST dirent.h.