본문으로 바로가기
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 하위 디렉터리까지 생성 디렉터리 만들기 함수

C언어 하위 디렉터리까지 생성 디렉터리 만들기 함수

· 댓글 0 · 바다야크

C언어 하위 디렉터리까지 모든 디렉터리 만들기 함수

C언어에서 mkdir() 함수로 디렉터리를 생성할 수 있지만, 만들려는 디렉터리의 상위 디렉터리가 있어야 생성됩니다. 디렉터리가 없는 곳에 디렉터리를 만들 수 없습니다. 그래서 상위 디렉터리가 없으면 상위 디렉터리를 차례로 만들어 전체 디렉터리를 만드는 함수 force_directory()입니다.

force_directory()

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

void  force_directory( char *a_dirc){

   char    buff[1024];
   int     sz_dirc;
   int     ndx;
   
    sz_dirc = strlen( a_dirc);
    for ( ndx = 1; ndx < sz_dirc; ndx++){
        if ( '/' == a_dirc[ndx]){
            memset( buff, 0, sizeof( buff));
            memcpy( buff, a_dirc, ndx);
            if ( 0 != access( buff, F_OK)){
                mkdir( buff, 0777);
            }
        }
    }
    if ( 0 != access( a_dirc, F_OK)){
        mkdir( a_dirc, 0777);
    }
}

int main( void)
{
   force_directory( "/home/jwjw/temp/a/b/c");
   return 0;
}

예제 실행

jwjw@temp$ ls -al
합계 8
drwxrwxr-x  2 jwjw jwjw 4096  4월 22 16:19 .
drwxr-xr-x 27 jwjw jwjw 4096  4월 22 16:18 ..

              // temp 디렉터리 안은 비어있습니다.
              // force_directory()를 호출하는 예제를 실행합니다.

jwjw@temp$ ls -al
합계 12
drwxrwxr-x  3 jwjw jwjw 4096  4월 22 16:24 .
drwxr-xr-x 27 jwjw jwjw 4096  4월 22 16:18 ..
drwxr-xr-x  3 jwjw jwjw 4096  4월 22 16:24 a
jwjw@temp$ cd a
jwjw@a$ ls -al
합계 12
drwxr-xr-x 3 jwjw jwjw 4096  4월 22 16:24 .
drwxrwxr-x 3 jwjw jwjw 4096  4월 22 16:24 ..
drwxr-xr-x 3 jwjw jwjw 4096  4월 22 16:24 b
jwjw@a$ cd b
jwjw@b$ ls -al
합계 12
drwxr-xr-x 3 jwjw jwjw 4096  4월 22 16:24 .
drwxr-xr-x 3 jwjw jwjw 4096  4월 22 16:24 ..
drwxr-xr-x 2 jwjw jwjw 4096  4월 22 16:24 c
jwjw@b$ cd c
jwjw@c$ ls -al
합계 8
drwxr-xr-x 2 jwjw jwjw 4096  4월 22 16:24 .
drwxr-xr-x 3 jwjw jwjw 4096  4월 22 16:24 ..
jwjw@c$

터미널의 화면 캡쳐 이미지입니다.

force_directory() 예제 실행 결과

주의하실 것은 생성하려는 디렉터리에 홈 디렉터리를 의미하는 ~을 사용하면 안 됩니다. 즉, force_directory( "~/temp/a/b/c") 처럼요. 또한, 생성하려는 디렉터리 전체 이름이 NULL 포함 1024 바이트보다 크면 안 됩니다. 만일 1024보다 큰 이름의 디렉터리를 생성하려면 force_directory() 함수 내의 buff 배열 크기를 키우세요.

💬 댓글 0

이름을 저장합니다.

최근글 thumbnail C언어 텍스트 파일 읽기 예제 thumbnail 모기 물린데 가려움증 없애는 기구 3가지 thumbnail 바퀴벌레 약 추천 맥스포스겔 셀렉트 이지겔 (2) thumbnail C언어 텍스트 파일 쓰기 방법 thumbnail 카카오톡 책갈피로 중요한 톡 북마크 표시 thumbnail 윈도우 노트북 SD 메모리 카드 암호화 방법 thumbnail 삼성덱스 휴대폰 충전 방법 (1) thumbnail 돈 버는 어플 3종 현금되는 영수증 인증과 돈버는 만보기앱
다행이네요. 약 효과가 아무⋯ 💬바다야크 이사 오기전 전에 저도 썼었⋯ 💬라디오키즈 구글 크롬 원격 데스크톱을⋯ 💬바다야크 구글크롬 원격데스크탑 사용⋯ 💬ㅠㅠ 아! 그렇습니까. 맥을 사용하⋯ 💬바다야크