bonsoir(encore lui diront certains lol) voila j ai de nouveau un problème.J ai un fichier conversion.c qui convertit une matrice en chaine de caractère et inversement.J ai fait un main qui appelle ses fonction la premiere fonctionne sans problème mais la deuxieme ne fonctionne pas j ai une erreur de segmentation.J ai mis beaucoup de printf dans la fonction pour reperer l erreur et j ai remarqué qu elle se situait a l affectation de la valeur dans le tableau(je l ai mis en commentaire dans le code cidessous).

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
#include <stdio.h>
#include <stdlib.h>
#include"matrice.c"
 
# define MAX 0
//fonction puissance//////////////////////////
int puissance(int nb,int exposant)
{
int resu=nb;
int k=1;
 
if (exposant>0)
{
for (k=1;k<exposant;k++)
{
resu=resu*nb;
}
 
}
if (exposant==0)
{
resu=1;
}
return resu;
}
//fonction qui converti une matrice en chaine////////////////////////////////
 
char* mattoc(matrice *mat)
{
char* resultat;
char buf[1];
char final[1024];
resultat="\0";
int i,j;
final[1024]="\0";
 
 
 
 
for (i=0 ; i<(*mat).nbl ;i++)
{
	for (j=0 ; j<(*mat).nbc ;j++)
	{
 
		//printf("%d\n",j);
		sprintf(buf,"%d",(*mat).tab[i][j]);
		strcat(final,buf);
		if (j!=2){strcat(final,",");}
	}
		strcat(final,"/");
}
resultat=final;
return resultat;
}
//fonction qui converti une chaine en matrice////////////////////////////////
matrice *ctomat(char *final)
{
matrice *mat;
char buffer;
int nblu=0;
int compt=0;
int nbl=0;
int nbc=0;
int nb=0;
int n;
int k=0;
int i=0;
int j=0;
char temp[500]="\0";
printf("on rentre dans la fonction\n");
strcpy(temp,final);
printf(" le chaine a converir est %s\n",temp);
printf("on fait %d\n",strlen(temp));
while(compt<strlen(temp))
 {
	printf("on rentre dans while\n");
if ( (temp[compt]!=',') && (temp[compt]!='/') ) 
	{
		printf("on rentre dans 1er if\n");
		nblu++;
 
	}
 
  if ( (temp[compt]==',') || (temp[compt]=='/') )
	{
 
	printf("on rentre dans 2ème if\n");
	for(k=compt-nblu;k<compt;k++)
		{
 
			nblu--;
			buffer=temp[k];
			n = strtol (buffer, NULL, 10);
			printf("on converti buffer vers n\n");
			printf(" n vaut %d\n",n);
			nb=nb+(n*puissance(10,nblu));
			printf(" nb vaut %d\n",nb);
 
		}
		printf("valeur de nbl %d\n",nbl);
		printf("valeur de nbc %d\n",nbc);
		mat->tab[nbl][nbc]=nb;//l erreur est ici
		//printf("%d\n",nb);
		nb=0;
		nbc++;
 
	}	
if (temp[compt]=='/') 
	{
	nbl++;
	(*mat).nbl=nbl;
	nbc=0;
	}
compt++;
 
}
return mat;
}
Je sais que c est un algo largement perfectible mais j attend si possible une correction sur mon erreur et pas sur le fonctionnement general du programme(à moins que ce soit ça le problème).Si je dois mettre les autre fichiers et le main dites le moi je ne voulais pas saturé la page.