1
파일 쓰기를 시작하기 위해 fopen
에 대한 사용자 입력을받는 C++ 프로그램이 있습니다. 어떤 사람이 FILE*
을 반환하는 함수를 찾은 다음 의 Windows 특정 버전을 사용하여 fopen
에 대한 폴더 구조가 없어도 폴더 중 하나가 없기 때문에 지정된 위치에 새 파일을 열 수 있습니다. 무리 감사!fopen에 대한 새 폴더 만들기
파일 쓰기를 시작하기 위해 fopen
에 대한 사용자 입력을받는 C++ 프로그램이 있습니다. 어떤 사람이 FILE*
을 반환하는 함수를 찾은 다음 의 Windows 특정 버전을 사용하여 fopen
에 대한 폴더 구조가 없어도 폴더 중 하나가 없기 때문에 지정된 위치에 새 파일을 열 수 있습니다. 무리 감사!fopen에 대한 새 폴더 만들기
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);
글쎄, 그게 내가 찾고 있었던 것입니다. 다시 한 번 감사드립니다! – Gbps
SHCreateDirectoryEX를 사용하는 것이 더 합리적이라고 생각합니다. – Luke
MSDN은 SHCreateDirectoryEx에 대해 명시 적으로 다음과 같이 명시 적으로 설명합니다. "이 기능은 Windows XP 서비스 팩 2 (SP2) 및 Windows Server 2003에서 사용할 수 있습니다. 이후 버전의 Windows에서는이 기능이 변경되거나 사용할 수 없습니다." 따라서 프로그램이 많은 사용자들에게 배포 될 것이라면 좋은 선택이 아닙니다. 이 함수가 저자 자신 만이 사용할 작은 유틸리티의 일부라면 좋은 선택 일 수 있습니다. – truthseeker