본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 디렉토리 안에 있는 항목 구하기 함수 readdir()

C언어 디렉토리 안에 있는 항목 구하기 함수 readdir()

· 댓글개 · 바다야크

C readdir() 디렉토리 안에 있는 항목 구하기 

opendir()로 열기를 한 디렉토리에 대해, 그 안에 있는 모든 파일과 디렉토리 정보를 구합니다.

  • 헤더: dirent.h
  • 형태: struct dirent *readdir( DIR *dir)
  • 인수: DIR *dir opendir()에서 열기한 디렉토리 정보
  • 반환: struct dirent * 성공하면 파일이나 디렉토리 정보를 반환하고, 실패하면 NULL을 반환합니다.

readdir()을 처음 호출하면 opendir()에서 열기를 한 디렉토리 안에 있는 파일 중 첫번째 파일에 대한 정보를 구합니다. 다시 호출하면 두번째 파일에 대한 정보를 구하고, 다시 호출하면 세번째 파일을, .... 계속 호출하면 그 다음 파일의 정보를 반환하다가 더 이상 파일이나 디렉토리가 없다면 NULL을 반환하게 됩니다.

파일 및 디렉토리 정보를 담는 struct dirent는 linux/entry.h 안에 있습니다.

struct dirent {
   long              d_ino;        // inode 번호
   __kernel_off_t    d_off;        // 디렉토리 내에서의 오프셋
   unsigned short    d_reclen;     // 엔트리의 길이
   char              d_name[256];  // 파일이나 디렉토리 이름
};

C언어 readdir() 함수 예제

#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>

int main()
{
   DIR            *dir_info;
   struct dirent  *dir_entry;

   mkdir( "test_A"     , 0755);           // 실행 파일이 있는 곳에 생성
   mkdir( "test_B"     , 0755);           // 실행 파일이 있는 곳에 생성

   dir_info = opendir( ".");              // 현재 디렉토리를 열기
   if ( NULL != dir_info)
   {
      while( dir_entry   = readdir( dir_info)){ // 디렉토리 안에 있는 모든 파일과 디렉토리 출력
         printf( "%s\n", dir_entry->d_name);
      }
      closedir( dir_info);
   }
}

실행 결과

]$ ./a.out
test.c
..
.
test_B
test_A
a.out
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.