[EDIT] fork de cette discussion[/EDIT]
Bonjour.
Je préfère continuer ici que de créer mon propre topic, les sujets étant similaires.
Je souhaite moi aussi lister les fichiers d'un répertoire, puis leur appliquer un traitement particulier.
Mon idée d'organisation est la suivante:
1 - Est ce que c'est une bonne organisation?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // je liste les noms des fichiers à traiter dans un tableau char *tab_list_files[256]; //je fais une boucle qui va traiter tous les fichiers While(tab_list_files[i]!=NULL) { current_file = tab_list_files; traitement(); i++ }
2 - J'ai un problème technique dans mon code qui est le suivant:
- je liste les fichiers d'un répertoire
- si le nom de fichier commence par "debut", je l'affiche et je le stock dans mon tableau
-> OK
- mais une fois le listing terminé, quand je veux réutiliser les noms de mes fichiers séléctionnés, ils ont tous pris le nom du dernier fichier lu dans le répertoire... HELP !!!
Je tourne en rond, je ne comprend pas pourquoi mes variables qui ont à l'intstant T1 le bon nom de fichier prennent en T2 le nom du dernier fichier du répertoire lu...
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 char *tab_list_files[256]; int i; int main() { struct dirent *lecture; DIR *rep; rep = opendir("." ); i=0; while ((lecture = readdir(rep))) { // on lit tous les fichiers du répertoire local if(!strncmp(lecture->d_name,"debut",5)) // si les 5 premières lettres du nom de fichier = "début" { tab_list_files[i] = lecture->d_name; // alors on enregistre ce nom de fichier dans le tableau tab_list_files printf("%s\n", tab_list_files[i]); // T1 au passage on l'affiche i++; } } closedir(rep); i=0; while(tab_list_files[i]!=NULL) // on va afficher toutes les noms de fichiers stoquées qui ne sont pas vides { printf("\n+1 %s\n",tab_list_files[i]); // T2 on réaffiche les noms des fichiers commençant par "début" -> cela ne marche pas i++; } getch(); return 1; }
Partager