Bonjour , j'ai réalisé un ptt programme pour copier les dossiers(fichiers, répertoires)
d'un répertoire source dans un répertoire cible.
j'éspere trouver un ptt aide pour l'améliorer car, je réussi à avoir les fichiers dans le répertoire cible mais avec une nomination bisard.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
 
#include <stdio.h>
 
#include <fcntl.h> 
 
#include <errno.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
 
 
 
int copier_fichier (char *f_source, char *f_cible)
 
{
 
	char buffer[512];
 
    	int fd1, fd2, n;
 
	strcat(f_cible,f_source);
 
 
 
    	//Ouvrir le fichier à copier en lecture
 
 
 
    	fd1=open (f_source , O_RDONLY);
 
 
 
   	 // Creer et ouvrir le fichier "titi.txt" en ecriture
 
    	fd2=open (f_cible , O_CREAT|O_WRONLY|O_TRUNC,0666);
 
   	 while((n=read(fd1,buffer,512))>0)
 
    	{
 
    	write(fd2,buffer,n);
 
    	}
 
 
 
    	close(fd1);
 
   	close(fd2);
 
return 0;
 
 
 
}
 
 
int copier_dir (char *r_source, char *r_cible)
 
{
 
 
	struct dirent *lecture;
	DIR *rep1,*rep2;
	strcat( r_cible,"/");
 
	// Ouvrir le réperoire source
	rep1 = opendir(r_source);
 
 
	// Ouvrir le répertoire source
	rep2 = opendir(r_cible);
 
 
	while ((lecture = readdir(rep1)))
   	 {
		struct stat st;
 		stat (lecture->d_name, &st);
 
		if (!strcmp (lecture->d_name, "." ))
             	continue;
         	if (!strcmp (lecture->d_name, ".." )) 
		continue;
 
		//if (S_ISDIR(st.st_mode)) // répertoire
	        //copier_dir(lecture->d_name,lecture->d_name);
 
		if (S_ISREG(st.st_mode))// fichier régulier
		{
 
		printf("%s\n",r_cible);
		copier_fichier(lecture->d_name,r_cible);
	       }
	}
 
 
return 0;
}
 
void main (int argc, char * argv[])
 
{
	copier_dir(argv[1],argv[2]);
}

pour printf("%s",r_cible);

j'ai le résultat suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
./tmp1/
./tmp1/copier-rep.c~
./tmp1/copier-rep.c~copier
./tmp1/copier-rep.c~copiercopier_rep.c~
./tmp1/copier-rep.c~copiercopier_rep.c~newrep
./tmp1/copier-rep.c~copiercopier_rep.c~newreprep
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.c
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txt
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_file
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.c
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.ctatos.tx
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.ctatos.txlister
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.ctatos.txlistertype_file.c
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.ctatos.txlistertype_file.clister.c~
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.ctatos.txlistertype_file.clister.c~lister.c
./tmp1/copier-rep.c~copiercopier_rep.c~newreprepcopier_fichier.c~copier_fichier.cmourad.txttype_file.c~mourad~type_filecopier.ctatos.txlistertype_file.clister.c~lister.ccopier.c~

alors que je veux avoir un résultat comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
./tmp1/copier_rep.c
./tmp1/copier.c
./tmp1/lister.c
./tmp1/tmp
....
Merci d'avance