Bonjour a tous,

Je m excuse a l avance, je suis sur un clavier US et je ne vois pas les accents donc pardon pour ma ponctuation desastreuse.

Comme le dit le titre, je bloque sur une erreur de segmentation dont voici le code :
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
void lire(int num){
// PROBLEME : CB Y A TIL DE FICHIERS DS LE DOSSIER AFIN DE COMPARER AVEC NUM --->  nbfiles()
// PB2 : Segmentation fault ?
	int cmp = nbfiles("home/larchicha/Desktop/recus");
	int i ; int descript ;
	char * num_str = malloc(50*sizeof(char)); 
	char * buff = malloc(100*sizeof(char)); 
	char * chemin = malloc(100*sizeof(char));;
	strcpy(chemin,"home/larchicha/Desktop/recus/");// chemin contient le debut du chemin moins le nom du fichier (1 2 3 4)
	for(i=0;i<cmp;i++){
		if (i == num){// tant qu on trouve pas le numero du symlink on boucle
			snprintf(num_str, 4, "%d", num);// convertit num : int -> string
			strcat(chemin,num_str);// concat le nom du fichier (1 ou 2 ou 3 ou 4) au chemin
 			descript = open(chemin,O_RDONLY);//on ouvre le fichier appeller 'num' 
			read(descript,buff,sizeof buff);// on lit le contenu du fichier
			printf("Le contenu du message est : %s\n",buff);//on l affiche
		} else {
		//perror("Le numero donne en argument ne correspond a aucun fichier : ");
		}
	}
}
 
int main(){
 
	nbfiles("recus");
	lire(2);
	return 0;
}
A savoir que la fonction nbfiles(const char *) prend le chemin d un repertoire et me renvoi le nombre de fichiers au il contient. (elle fonctionne, je l ai testee dans un autre fichier)

J ai bien entendu essaye de mettre en commentaire toutes les lignes qui me semblait potentiellement fausse mais je coince.

Merci pour l aide apportee.