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!

Était-ce utile?

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 );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top