#include <stdio.h>
#include <string.h>
#include <direct.h>
int main()
{
char dir[256];
int ret = 0;
FILE *fp;
ret = chdir("C:\\test"); // test라는 디렉토리가 있으면 0, 없으면 -1을 리턴함.
if(ret == -1) // test라는 디렉토리가 없을경우
mkdir("C:\\test"); // test 디렉토리 생성
else { // test라는 디렉토리가 있을경우
chdir("C:\\test"); // test 디렉토리로 이동
fp = fopen("test.txt","wt"); // test.txt파일 open
if(fp){
fprintf(fp,"This is a test file.");
fclose(fp);
}
}
return 0;
}
폴더가 있는지 없는지의 체크는 위처럼 _chdir()의 리턴값을 조사하면
되는데, 존재하지 않을 때 어차피 새로 생성해야 할 거라면 리턴값 무시하고
그냥 _mkdir()를 사용하시면 된다(실행 상 아무 문제 없음).
_mkdir()은 한번에 한 폴더만 생성한다. 그래서 여러 레벨의 경로를 한꺼번에
생성하는 함수 예(make_path)를 아래에 보였습니다. 경우에 따라선 유용하게
사용하실 수 있다.
#include <stdio.h>
#include <string.h>
#include <direct.h>
void make_path(const char *full_path);
void main()
{
make_path("C:\\test\\bbb\\test.txt");
}
void make_path(const char *full_path)
{
char temp[256], *sp;
strcpy(temp, full_path); // 경로문자열을 복사
sp = temp; // 포인터를 문자열 처음으로
while((sp = strchr(sp, '\\'))) { // 디렉토리 구분자를 찾았으면
if(sp > temp && *(sp - 1) != ':') { // 루트디렉토리가 아니면
*sp = '\0'; // 잠시 문자열 끝으로 설정
_mkdir(temp); // 디렉토리를 만들고 (존재하지 않을 때)
*sp = '\\'; // 문자열을 원래대로 복귀
}
sp++; // 포인터를 다음 문자로 이동
}
}
'프로그래머의 길 > C & C++' 카테고리의 다른 글
마방진 소스 (0) | 2007.06.28 |
---|---|
오늘의 날짜를 리턴해 주는 함수 <time.h> (0) | 2007.04.12 |
이진 트리로 구현한 문자열, 숫자 정렬 소스 (0) | 2007.03.30 |
const의 정확한 이해 (0) | 2007.03.26 |
조건부 컴파일 전처리 명령어 (0) | 2007.03.26 |