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) ;
}
28 févr. 2007 à 20:21
qui sert à rien
28 févr. 2007 à 14:09
Je ne m'étais pas relu. Ca m'apprendra :) C'est vrai, *c est un pointeur, qui en l'occurence va servir ici à pointer vers l'adresse mémoire d'une chaine de caractères.
26 févr. 2007 à 10:23
dur dur de taper direct ici sans se relire...
"c ne serait pas une chaine de caractère"
sérieux ça ne veut rien dire.
*c est un pointeur, c'est à dire une adresse mémoire.
26 févr. 2007 à 09:43
26 févr. 2007 à 09:36
BruNews > Tu as écris la chose suivante:
char *d = filename, c;
Ce ne serait pas plutot :
char *d = filename, *c;
Car sinon, la variable c ne serait pas une chaine de caractère :D
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.