Tableau de chaînes de caractères
[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:
Code:
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++
} |
1 - Est ce que c'est une bonne organisation?
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 !!!
Code:
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;
} |
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...