Fonction récursive de destruction d'un repertoire et son sous ensemble - C++ - Programmation
Marsh Posté le 04-04-2006 à 13:09:59
Pense à désallouer le char *buffer;
Code :
|
Es-tu sur du "rmdir" ??
Je crois que le problème viens de ce que tu ajoute '\' à la fin de la chaîne passée en argument à DelRepertoire.
Marsh Posté le 04-04-2006 à 11:50:18
Bonjour, je suis en train de faire une fonction qui détruit un répertoire récursivement avec l'ensemble des sous repertoires.
malheureusement, même si mon sous répertoire a été vidé, la destruction du repertoire rmdir(szRepertoire); ne marche pas systèmatiquement. Un peu comme si je n'avais pas fermé un objet
Quelqu'un peut t'il m'aider?
int DelRepertoire(LPSTR szRepertoire)
{
HANDLE HFile;
WIN32_FIND_DATA file_i;
char sPathRep [MAX_PATH +1];
char sFileSearch [MAX_PATH +1];
strcpy(sPathRep, szRepertoire);
if ( szRepertoire[lstrlen(szRepertoire)-1] != '\\')
sprintf((LPSTR) sPathRep ,"%s%c", szRepertoire, '\\');
sprintf((LPSTR) sFileSearch, "%s%s", sPathRep, "*" );
HFile = FindFirstFile(sFileSearch,&file_i);
if (INVALID_HANDLE_VALUE == HFile) return (0);
sprintf(sFileSearch,"%s%s",sPathRep,file_i.cFileName);
DeleteFile(sFileSearch);
while(FindNextFile(HFile,&file_i) != 0)
{
if( !strcmp(file_i.cFileName,"." ) || !strcmp(file_i.cFileName,".." ) )
continue;
if( (file_i.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
char * buffer = NULL;
buffer=(char*) malloc( sizeof(char)*(strlen(sPathRep)+strlen(file_i.cFileName)+1) );
strcpy(buffer,sPathRep);
strcat(buffer,file_i.cFileName);
strcat(buffer,"\\" );
DelRepertoire(buffer, "*" );
}
else
{
sprintf(sFileSearch,"%s%s",sPathRep,file_i.cFileName);
DeleteFile(sFileSearch);
}
}
FindClose(HFile);
rmdir(szRepertoire);
return(0);
}