readdir()에 대한 질문입니다...

wildone의 이미지

opendir, closedir, readdir함수를 사용해 보기 위해서 한번 만들어본 코드입니다.

#include <stdio.h>
//#include <sys/types.h>
//#include <sys/stat.h>
#include <dirent.h>
#include <string.h>


int main(int argc, char *argv[]){

        char name[100];
        DIR *dirp;
        struct dirent *dp;

        printf("argc = %d\n",argc);
        printf("argv[0] = %s\n",argv[0]);

        if(argc == 1){
        printf("\nThis program will check current dir have following dir\n : ");
        scanf("%s",name);
        }
        else{
        strcpy(name, argv[1]);
        }

        dirp = opendir(".");

        while( (dp = readdir(dirp)) != NULL){
                if(strcmp(dp->d_name,name) ==0){
                        (void) closedir(dirp);
                        printf("\n%s Found.\n\n",dp->d_name);
                        return 1;
                }
        }
        (void)closedir(dirp);
        printf("\nCan't find %s\n\n",name);

return 0;

}

궁금한 점은 이 코드가 아니라 실행 결과인데요..

같은 경로상에 abc란 파일이 있을경우 abc를 찾으라고 하면

있다고 출력을 해주더라구요.

원래 이 함수들은 디렉토리 뿐만이 아니라 파일에 대해서도

샤바샤바하는건가요?

cinsk의 이미지

예. readdir이 directory name만을 돌려주는 함수가 아니고 directory 자체를 읽어서 그 디렉토리 안에 있는 파일(여기서 파일이란 모든 종류, fifo, symbolic link, directory, character device, block device)들을 알려주는 함수입니다.