Salut,
voilà une fonction qui copie un repertoire et toute son arborescence
fichiers compris vers un autre répertoire,
comme la commande msdos xcopy, mais c'est une vieille histoire
avec quelques retouches ce qui suit devrait t'être utile
cordialement
#include <stdio.h>
#include <dir.h>
void copydir(char *repsource, char *repcible);
void copyfile(char *Fsource,char *Fcible);
void copydir(char *repsource, char *repcible)
{
char nomfic[256],search[256];
char fichiersource[256],fichiercible[256];
struct ffblk ffblk;
strcpy(search,repsource);
strcat(search,"\\*");
int done;
int nbfic=0;
while (true)
{
if(!nbfic)
{done = findfirst(search,&ffblk,FA_RDONLY + FA_DIREC);}
else
{done = findnext(&ffblk);}
if (done) break;
strcpy(nomfic,ffblk.ff_name);
strcpy (fichiersource,repsource); strcat (fichiersource,"\\");
strcat (fichiersource,nomfic);
strcpy (fichiercible,repcible); strcat (fichiercible,"\\");
strcat (fichiercible,nomfic);
if(ffblk.ff_attrib & FA_DIREC)
{
int i;
for(i=strlen(fichiersource);i>0 && fichiersource[i]!='\\';--i);
if(fichiersource[i+1]!='.') // ne pas copier les dosiers parents
{
mkdir(fichiercible);
copydir(fichiersource,fichiercible);
// recursif pour sous repertoires
}
}
else
{
copyfile(fichiersource,fichiercible);
}
nbfic++;
}
}
// copier un fichier et choisir de le renomer
void copyfile(char *Fsource,char *Fcible)
{
FILE *source, *cible;
source =fopen(Fsource,"rb");
cible =fopen(Fcible,"wb");
while(true)
{
register c=fgetc(source);
if(feof(source))break;
fputc(c,cible);
}
fclose(cible);
fclose(source);
}
¤