2010-05-14 4 views
1

파일 쓰기를 시작하기 위해 fopen에 대한 사용자 입력을받는 C++ 프로그램이 있습니다. 어떤 사람이 FILE*을 반환하는 함수를 찾은 다음 의 Windows 특정 버전을 사용하여 fopen에 대한 폴더 구조가 없어도 폴더 중 하나가 없기 때문에 지정된 위치에 새 파일을 열 수 있습니다. 무리 감사!fopen에 대한 새 폴더 만들기

답변

2

dbghelp.h에 선언 된 Windows API에 MakeSureDirectoryPathExists 메소드가 있습니다. 그것은 재귀 적으로 디렉토리를 생성합니다. 그래서 나는 그것이 당신이 무엇인지 추측합니다. 그러나 특정 디렉토리에 대한 쓰기 권한이있는 경우 권한에 따라 다르므로 요청할 때 '결코 실패하지 않음'을 확인할 방법이 없습니다.

편집 : 여기에 약간의 샘플 코드가 있습니다. 그것은 내가 그것을 썼을 때 dbghelp 헤더를 찾을 수 없으므로 GetProcAddress를 사용합니다.

typedef BOOL (WINAPI * CreateDirFun) (__in PCSTR DirPath); 

HMODULE h = LoadLibrary("dbghelp.dll"); 
CreateDirFun pFun = (CreateDirFun) GetProcAddress(h, "MakeSureDirectoryPathExists"); 
(*m_pFun)(psPath)) 
CreateDirectory(psPath); 
FreeLibrary(h); 
+0

글쎄, 그게 내가 찾고 있었던 것입니다. 다시 한 번 감사드립니다! – Gbps

+0

SHCreateDirectoryEX를 사용하는 것이 더 합리적이라고 생각합니다. – Luke

+1

MSDN은 SHCreateDirectoryEx에 대해 명시 적으로 다음과 같이 명시 적으로 설명합니다. "이 기능은 Windows XP 서비스 팩 2 (SP2) 및 Windows Server 2003에서 사용할 수 있습니다. 이후 버전의 Windows에서는이 기능이 변경되거나 사용할 수 없습니다." 따라서 프로그램이 많은 사용자들에게 배포 될 것이라면 좋은 선택이 아닙니다. 이 함수가 저자 자신 만이 사용할 작은 유틸리티의 일부라면 좋은 선택 일 수 있습니다. – truthseeker