1. Unix/Linux OS
Unix계열의 환경에서 C언어로 디렉토리를 만드는 경우에 mkdir() 함수를 이용한다
• Prototype: int mkdir (const char *dirname, mode_t mode)
• 헤더 파일: <sys/stat.h>
• *dirname
: 생성할 디렉토리의 경로 및 이름
• mode
: 접근 권한 지정*
• 반환값
(1) 0 : 디렉토리를 정상적으로 생성함
(2) -1: 디렉토리를 생성 실패
- 만들려는 폴더가 이미 존재할 경우: errno → EEXIST
- 폴더가 부정확한 경우: errno → ENOENT
2. Windows
윈도우 계열에서도 마찬가지로 동일한 함수인 _mkdir()을 이용해서 디렉토리를 만든다. 하지만, 헤더파일이 다르다.
(1) mkdir()의 헤더 파일: <direct.h>
(2) 명령어: int _mkdir(const char *dirname);
mkdir()
함수를 이용하여 디렉토리를 만들 수 있다. 이때, 생성하고자 하는 디렉토리의 상위 디렉토리가 존재하지 않는다면, mkdir()
함수를 이용하여 디렉토리를 만들 수 없다. 따라서, 만일 우리가 /home/users/example/test1/test2
라는 test2 디렉토리를 만들고자 한다면 아래와 같이 상위 디렉토리들을 순서대로 만들어야 한다.
#include <sys/stat.h> // mkdir()
int main(void){
mkdir("/home/users/example");
mkdir("/home/users/example/test1");
mkdir("/home/users/example/test1/test2");
return 0;
}
3. 하위 디렉토리를 자동으로 만드는 코드
아래의 레퍼런스를 참조하길 바란다.
[1] http://forum.falinux.com/zbxe/index.php?document_srl=554232&mid=lecture_tip
[2] https://shaeod.tistory.com/322
[3] https://www.it-note.kr/216
[4] https://jangpd007.tistory.com/42
#include <string.h>
#include <sys/stat.h>
#define BUFF 1024
void mkdirs(char *dir_path){
char buff[BUFF];
char *p_dir = buff; // 포인터를 문자열 처음으로
strcpy(buff, dir_path); // copy the path of the directory
buff[BUFF-1] = '\0';
while(*p_dir){
if('/'== *p_dir){
*p_dir = '\0'; // 잠시 문자열의 끝으로 설정
mkdir(buff, 0777); //
*p_dir = '/'; // 문자열 원래대로 복귀
}
p_dir ++;
}
}
위의 함수는 아래의 그림과 같은 방식으로 하위 디렉토리를 만들게 된다.
'프로그래밍 언어 > C, C++ 다양한 예시들' 카테고리의 다른 글
[C/C++] 대화식 입력의 예제 (0) | 2022.03.19 |
---|---|
[C/C++] 메뉴 선택 방식 (0) | 2021.08.24 |
[CUDA] 데이터 복사 예제 (0) | 2021.08.20 |
[C 언어] 텍스트 파일의 총 개행 수 구하기 (0) | 2021.02.06 |
[C 언어] 2차원 동적 배열 만들기 (0) | 2021.01.31 |
댓글