Suppression d'un répertoire

Contenu du snippet

La fonction force_rmdir() force la suppression d'un répertoire, même s'il contient d'autres répertoires et des fichiers.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <io.h>
#include <sys/stat.h>

// avec la fonction "force_rmfile()" pour supprimer un fichier
void force_rmfile(char *filename)
{
	FILE *f = fopen(filename, "r") ;
	if (! f)
		return ;
	fclose(f) ;
	chmod(filename, S_IWRITE) ;
	remove(filename) ;
}    

// Fonction "force_rmdir()" pour supprimer un repertoire
void force_rmdir(char *dirname)
{
	DIR *dir;
	struct dirent *ent;
	dir = opendir(dirname) ;
	if (! dir)
	{
		force_rmfile(dirname) ;
		return ;
	} 
	while((ent = readdir(dir)) != NULL)
	{
		if (ent->d_name[0] == '.')
		continue ;
		char *filename = malloc(strlen(dirname) + 1
			+ strlen(ent->d_name) + 1 
			+ 1) ;
		strcpy(filename, dirname) ;
		strcat(filename, "\\") ;
		strcat(filename, ent->d_name) ;
		force_rmdir(filename) ;
		free(filename) ;
	}
	rmdir(dirname) ;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.