Bonjour, je me casse la tête sur ce programme. Je comprends pas où est le problème
J'ai une erreur windows quand je démarre le programme, mais sans erreur à la compilation
et le fichier où est la fonction
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 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define TAILLE_UN_FICHIER 4095 #include "adresses.h" #include "repertoire.h" int main(int argc, char *argv[]) { int i; char dossier[strlen(argv[0])]; // taille dossier dans lequel on est lors du lancement du prog int nbr_fichier = 0; struct fichier *courant, *fin;//debut ou courant fin = NULL; (*courant).suivant = fin; /* FIN DECLARATIONS */ for (i=0; i < argc; i++) { printf("Argument %li : %s \n", i+1, argv[i]); } /* FIN AFFICHAGE CONTEXTE */ strcpy(dossier,argv[0]); get_dossier(dossier);//on envoi le pointeur, retourne le dossier d'execution de l'exe printf("Dossier %s",dossier); get_files_in_folder(dossier,&courant); return 0; }
Si vous pouviez me dire d'où vient l'erreur, je me casse un peu la tête sur les pointeurs et les structures là. J'suis un peu novice en C. J'ai mis en gras les endroits où je pense que ça plante, mais je vois pas pourquoi...
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 #include <sys/types.h> #include <dirent.h> struct fichier { char adresse[TAILLE_UN_FICHIER]; struct fichier *suivant; }; get_files_in_folder(char folder[],struct fichier ** courant) { struct dirent *lecture; struct fichier *temp; /*Le dossier que l'on explore */ DIR *rep; /* On ouvre le dossier */ rep = opendir(folder); int num_fichier; num_fichier=0; while ((lecture = readdir(rep))) { //1) On rempli la valeur de courant system("pause"); strcpy((**courant).adresse,(*lecture).d_name); printf("%s\n",(**courant).adresse); system("pause"); //2) On prépare un nouveau courant temp =(struct fichier*) malloc(sizeof(struct fichier));//on crée un emplacement en mémoire (*temp).suivant = *courant; // on dit que temp pointe vers courant (pas le pointeur du pointeur, le pointeur) *courant = temp; //le pointeur de pointeur courant va maintenant pointer sur l'adresse de temp free(temp); } /* Fermeture du dossier */ closedir(rep); }
Partager