Création de nouveaux dossiers si elles n'existent pas pour fopen
Question
J'ai un programme C ++ qui prend l'entrée d'utilisateur pour fopen
afin d'initier une écriture de fichiers. Pourrais aider quelqu'un me trouver une fonction qui renvoie une FILE*
et utiliser la version spécifique de Windows de mkdir
afin de créer la structure de dossiers pour fopen
de ne jamais manquer d'ouvrir un nouveau fichier dans l'emplacement spécifié parce que l'un des dossiers n'existe pas. Merci un tas!
La solution
il y a une méthode MakeSureDirectoryPathExists dans l'API Windows, a déclaré dans dbghelp.h. Il crée récursive des répertoires, donc je suppose que ce que vous recherchez. Cependant, il n'y a aucun moyen de faire en sorte ce « ne manque jamais » comme vous le demandez, car cela dépend aussi de privilèges etc si vous avez accès en écriture à un répertoire.
edit: voici quelques exemples de code factice; il utilise GetProcAddress cependant, que je ne pouvais pas trouver l'en-tête de dbghelp quand je l'ai écrit.
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 );