bonjour a tous
voila, j'essaie d'ecrire un programme pour recuperer la racine de cetains fichiers de mon repertoire dans une tableau dynamique en C,
bonjour a tous
voila, j'essaie d'ecrire un programme pour recuperer la racine de cetains fichiers de mon repertoire dans une tableau dynamique en C,
Mon premier poste a ete tronque
Bonjour a tous
Voila, j'essaie d'ecrire un programme pour recuperer la racine de cetains fichier de mon repertoire dans une tableau dynamiaque en C, mais je n'y pas trop
Ca me dit tjrs segmentation fault
voila le code que j'ai écrit, e espérant qu'il y ait quelqu'un qui puisse m'aider la dessus, c'est tres urgent
SVP,quelqu'un pourrait-il m'aider a trouver la solution!!
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 int main(int argc, char *argv[] ) { char **liste_files; int Nb_files; int i,status; int ld, lw, L; char *racine, *ext; char *extdata=".ima"; char *extweight=".weight.ima"; char *nom; statut=0; struct dirent *lecture; DIR *rep; rep = opendir(argv[1]); Nb_files=0; liste_files=NULL; while ((lecture = readdir(rep))) { L=strlen(lecture->d_name); if(L>lw)//peut etre un fichier weight { ext=str_sub(nom, L-lw,L-1); if(strcmp (extweight, ext)==0)//fichier weight { printf("fichier weight: extension %s, racine: %s\n",ext, str_sub(lecture->d_name, 0,L-lw-1)); } else { ext=str_sub(nom, L-ld, L-1); if(strcmp (extdata, ext)==0)//fichier data { Nb_files++; liste_files = (char**)realloc(liste_files,Nb_files*sizeof(char*)); strcpy(liste_files[Nb_files-1],str_sub(lecture->d_name, 0,L-ld-1)); } } } else {if(L>ld) { ext=str_sub(nom, L-ld, L-1); if(strcmp (extdata, ext)==0)//fichier data { Nb_files++; liste_files = (char**)realloc(liste_files,Nb_files*sizeof(char*)); liste_files[Nb_files-1]=str_sub(nom, 0,L-ld-1); } } } } closedir(rep); printf("nombre de fichier data, d%n", Nb_files); for (ld=0;ld<Nb_files;ld++) printf("nom fichier : %s\n",liste_files[ld]); return status; }
Bonjour,
je regarde pas tant que y a pas la balise code autour![]()
j'ai verifie mon code sans les troncatures que je deverais faire, et ca marche, le probleme je pense me vient de cette fonction
je n'arrive pas a voir le probleme pour le monmnet sachant que ca marchait bien avant
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 char *str_sub (const char *s, unsigned int start, unsigned int end) { char *new_s = NULL; if (s != NULL && start < end) { new_s = malloc (sizeof (*new_s) * (end - start + 2)); if (new_s != NULL) { int i; for (i = start; i <= end; i++) { new_s[i-start] = s[i]; } new_s[i-start] = '\0'; } else { fprintf (stderr, "Memoire insuffisante\n"); return NULL; } } return new_s; }
si vous pouvez le regarder , peut etre que vous verrez la fautes plutot que moi!!
merci d'avance
n'est jamais vérifiée puisque tu l'initialise à NULL.if (new_s != NULL)
Partager