Bonjour à tous !
voilà je suis actuellement en train de réaliser un projet en langage C et avec la bibliothèque gtk+.
ce programme devra traiter des fichier .txt qui contiennent des informations (codes erreur , date , lieu ......) et afficher le dernier état du véhicule.
De plus , on devra avoir accès à une historique des états antérieurs.
Je rencontre deux problemes actuellement :
1- J'ai crée une fonction "listerFichier (char const *directory)" qui permet de lister tout les fichiers d'un repertoire (ex. : directory = "C:\\Projet"), de trier les fichiers par ordre croissant, de les stocker dans un tableau de char "chaine[i]" et de les affichers.
Mon probleme : je doit trier ces fichiers en fonction de la référence Z26XXX et dans l'ordre chronologique( la date figure dans le titre)
Reférence Date format(.txt)
Z26571_TING_180112_0956.txt
Z26567_TING_130112_1017.txt
Z26566_TING_210212_1024.txt
Z26565_TING_230212_0958.txt
Z26565_TING_060212_0954.txt
Z26565_TING_060112_0958.txt
Z26564_TING_030212_0941.txt
Z26529_TING_200212_1001.txt
.... il y a des centaines de fichiers de ce genre.
après avoir trié , je copier tout les fichier avec la meme référence
dans un meme fichier dans l'ordre chronologique.
Ma fonction ne trie uniquement par ordre décroissant en lisant chaque caractere un a un.
Je ne voi pas comment je pourrais procéder.
Mon idée : récupérer le tableau "chaine[]" dans le main , lire le nom de chaque fichier caractere par caractere pour pouvoir ensuite trier.
Mais je n'arrive pas à récupérer ce tableau.
voici ma fonction :
Merci.
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 void listerFichier (char const *directory) { DIR *dir = opendir (directory); if (dir != NULL) { char *chaine[512]; int i = 0; printf ("Dossier : '%s'\n", directory); { struct dirent *file; while ((file = readdir (dir)) != NULL) { if (strcmp (file->d_name, ".") != 0 && strcmp (file->d_name, "..") != 0) { chaine[i] = strdup (file->d_name); if (i < sizeof chaine / sizeof *chaine) i++; else break; } } closedir (dir); } { int n = i; for (i = 0; i < n; i++) { printf ("%s\n", chaine[i]); } printf ("Fin repertoire %s\n", directory); for (i = 0; i < n; i++) { free (chaine[i]), chaine[i]=NULL; } } } }
Partager