Создание новых папок, если они не существуют для fopen - PullRequest
1 голос
/ 14 мая 2010

У меня есть программа C ++, которая принимает пользовательский ввод для fopen, чтобы начать запись файла.Может ли кто-нибудь помочь мне найти функцию, которая будет возвращать FILE* и использовать специфичную для Windows версию mkdir, чтобы создать структуру папок для fopen, чтобы всегда открывать новый файл в указанном месте, потому что один изпапки не существуют.Большое спасибо!

1 Ответ

2 голосов
/ 14 мая 2010

в Windows API есть метод MakeSureDirectoryPathExists, объявленный в dbghelp.h. Он рекурсивно создает каталоги, так что я думаю, это то, что вам нужно. Тем не менее, НЕТ никакого способа убедиться, что это «никогда не завершится неудачей», как вы просите, так как это также зависит от привилегий и т. Д., Если у вас есть доступ на запись в определенный каталог.

edit: вот несколько примеров кода; он использует GetProcAddress, так как я не смог найти заголовок dbghelp, когда писал его.

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 );
...