Hello,
Merci de me lire,
excuser l'indentation des commentaires mai le copier coller déconne
pour le bug c'est simple c'est expliquer aux début du fichier
noter que je débute,depuis peux que je compile avec g++ j'utilise geany comme éditeur.
ce code est fonctionnel hormis le fait qu'il ne fait pas ce que je veux
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
#include <iostream>
#include <vector>
#include <string>
#include <dirent.h>
#include <sys/stat.h>
using std::string;
 
/*
Ce code est destiner a lister le plus rapidement possible.
Les fichier et les répertoire sous linux.
Avec leur attributs aux complet.(pas encore utiliser, ni coder)
*/
 
/*
Les répertoires ce présente comme ceci.
note: remplacer le ~ par celui de votre utilisateur.
mkdir -p ~/rep_racine/rep1
mkdir -p ~/rep_racine/rep2/sous_rep_2_0
mkdir -p ~/rep_racine/rep2/sous_rep_2_1
mkdir -p ~/rep_racine/rep2/sous_rep_2_2
mkdir -p ~/rep_racine/rep2/sous_rep_2_3
mkdir -p ~/rep_racine/rep3 
mkdir -p ~/rep_racine/rep2/sous_rep_2_3/sous_sous_rep2
* 
le dernier répertoire n'est pas trouver alors que ceux situer dans ~/rep_racine/rep2/ le son
*/ 
 
void Full_Search(std::vector<string> &search_full_path, 
std::vector<string> &search_rep_name, 
std::vector<string> &search_file_name, 
std::vector<string> &stat_info,std::string &transfere);												//Prototype Full_Search 
 
 
void Full_Search(std::vector<string> &search_full_path,
std::vector<string> &search_rep_name, 
std::vector<string> &search_file_name, 
std::vector<string> &stat_info, std::string &transfere)
{ 
 
	long number_element;																			//déclaration, nombre d'element
	std::string source_transfere;																	//déclaration, provisoire copie les donnée de la variable
	source_transfere = transfere;																	
	number_element = search_full_path.size() -1;
		std::cout << "DEBUG ----------1: " << number_element << " :----------contien----------: "
		 << search_full_path [number_element] << std::endl;
	if (source_transfere != "")
	{
		std::cout << "DEBUG ----------2: " << number_element << " :----------contien----------: " 
		<< search_full_path [number_element] << std::endl;
		int cmb = source_transfere.length();
		if (source_transfere.substr((cmb- 1), cmb) != "/")
		{ 
			source_transfere += "/";
			std::cout << "DEBUG ----------3: source_transfere :----------contien----------: " 
			<< source_transfere << std::endl;
		}
		DIR *InitialRep = opendir(source_transfere.c_str());
		if (InitialRep != NULL)
		{
			struct dirent *SRep;
			while ((SRep = readdir(InitialRep)) != NULL)											//tant que le répertoire contient des fichiers
			{
				string FileFound = SRep->d_name;													//definir le fichier (dernier répertoir trouver)
				string PathFound = source_transfere + FileFound;									// chemin complet
				if (FileFound != "." && FileFound != "..") 
				{	
					source_transfere = PathFound;
						FileFound = FileFound + "/";
						search_full_path.push_back(FileFound);
						++number_element;
						std::cout << "DEBUG ----------4: " << number_element << 
						" :----------contien----------: " << FileFound << std::endl;
						std::cout << "DEBUG ----------5: " << number_element << 
						" :----------contien----------: " << search_full_path [number_element] 
						<< std::endl;
						if (opendir(PathFound.c_str()) != NULL)
						{
							std::cout << "DEBUG ----------6: " << number_element << 
							" :----------contien----------: " << search_full_path [number_element] 
							<< std::endl;
							Full_Search(search_full_path, search_rep_name, 
							search_file_name, stat_info, source_transfere);							//apelle recusif pour les sous répertoires bug ?
							std::cout << "DEBUG ----------7: " << number_element 
							<< " :----------contien----------: " << search_full_path [number_element] 
							<< std::endl;
						}
				}
				else																				//else uniquement pour le debugage,il est possible de le supprimer
				{
					std::cout << "DEBUG ----------8: " << number_element << 
					" :----------contien----------: " << search_full_path [number_element] 
					<< std::endl;
					std::cout << "DEBUG ----------9: " << FileFound << std::endl;
					std::cout << "DEBUG ----------10: " << transfere << std::endl;
					std::cout << "DEBUG ----------11:: " << source_transfere << std::endl;
 
				}
			} //while
		}
		closedir(InitialRep);																		//fermer le repertoire courant
	}
}																									//function Full_Search
 
int main()
{
																									//variable
std::vector<std::string> search_full_path;															//retourne un tableau chemin complet de tout les répertoires trouver
std::vector<std::string> search_rep_name; 															//repertoir seulement,pas encore utilisée
std::vector<std::string> search_file_name;															//fichier seulement,pas encore utilisée
std::vector<std::string> stat_info;																	//information global sur le répertoir ou le dossier,pas encore utilisée
std::string transfere;																				//variable pour le nom du repertoir en recusiviter, passe en paramettre le répetoire racine.
 
																									//code
 
search_full_path.push_back("/home/taz/rep_racine/");												//valeur par defaut,en cour de dévloppment,rarement utiliser
transfere = "/home/taz/rep_racine";
Full_Search(search_full_path, search_rep_name, search_file_name, stat_info,transfere);
std::cout << "nombre d'élément apres execution " << search_full_path.size() << std::endl;			//affiche le nombre d'entrée du tableau
	for (long i = 0; i < search_full_path.size(); ++i ) 											//affiche le contenu du tableaux
    {
    	std::cout << search_full_path[i] << std::endl;
    }
std::cout << "affichage terminer" << std::endl;
return 0;
}																									// main