디렉토리 내 파일 목록 프로그램

CBeginner
지금 연습하기

소개

이 랩에서는 dirent.h 헤더 파일을 사용하여 디렉토리에 있는 모든 파일을 나열하는 C 프로그램을 만들 것입니다.

참고: 코딩을 연습하고 gcc 를 사용하여 컴파일하고 실행하는 방법을 배우려면 직접 ~/project/main.c 파일을 생성해야 합니다.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

헤더 파일 포함

프로그램 시작 부분에 다음 코드를 작성하여 표준 입출력 및 dirent 헤더 파일을 포함해야 합니다.

#include <stdio.h>
#include <dirent.h>

Main 함수 정의

main() 함수는 우리 프로그램의 진입점입니다. 우리 프로그램은 여기서부터 실행을 시작합니다. 또한 DIR 타입의 디렉토리 포인터 dstruct dirent 타입의 디렉토리 엔트리 포인터 dir을 선언할 것입니다.

int main(void)
{
    DIR *d;
    struct dirent *dir;
    /*Your code goes here*/
    return 0;
}

디렉토리 열기

opendir() 함수를 사용하여 필요한 디렉토리를 열 것입니다. 여기서 점 (.) 연산자는 현재 디렉토리를 나타냅니다.

d = opendir(".");

디렉토리 읽기

readdir() 함수를 사용하여 디렉토리의 각 항목을 읽을 것입니다. 여기서 디렉토리 포인터가 NULL 이 아닌지 확인합니다. NULL 이 아니면 디렉토리에 있는 모든 파일을 출력합니다.

if (d)
{
    while ((dir = readdir(d)) != NULL)
    {
        printf("%s\n", dir->d_name);
    }
    closedir(d);
}

전체 코드

다음은 프로그램의 전체 코드입니다.

#include<stdio.h>
#include<dirent.h>

int main(void)
{
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    if (d)
    {
        while ((dir = readdir(d)) != NULL)
        {
            printf("%s\n", dir->d_name);
        }
        closedir(d);
    }
    return(0);
}

요약

이 랩에서는 디렉토리 내의 모든 파일 이름을 나열하는 C 프로그램을 만드는 방법을 배웠습니다. 이를 위해 dirent.h 헤더 파일의 함수를 사용했습니다. 이 프로그램을 사용하면 지정된 디렉토리에 있는 모든 파일의 이름을 쉽게 검색할 수 있습니다.