Bonjour à tous,
je réalise un programme qui a pour but d'ouvrir des matrices stockées dans un fichier txt, puis d'effectuer des opérations sur ces dernières, entre autre l'addition et la transposition. Mon programme ressemble a ca :
J'aurai pu renvoyer un struct matrice au lieu de prendre en argument deux matrices dont la structure est déjà définie mais l'objectif c'est de transposer M et de stocker cette transposée dans T !
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 int transposition(struct matrice *M, struct matrice *T) { T->m=M->n; T->n=M->m; T->v_ptr = (double *) malloc ((T->n)*(T->m)*sizeof(double)); printf("Voici la matrice après transposition\n"); for (int i=0;T->n;i++) { for (int j=0;j<T->m;j++) { T->v_ptr[i*(T->m)+j]=M->v_ptr[j*(M->m)+i]; } } return 0; }
Dans mon main j'appelle cette fonction de la manière suivante :
Or il se trouve qu'après compilation puis execution, j'ai un message d'erreur " Segementation fault (core dumped) ".
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 int main(int argc, char *argv[]) { struct matrice M; struct matrice *T = malloc(sizeof(struct matrice)); int test1 = lecture_fichier(&M,argv[1]); if (test1==1) { printf("Voici la matrice %s\n",argv[1]); afficher_mat(&M); transposition(&M,T); afficher_mat(T); free(M.v_ptr); free(T->v_ptr); } return 1; }
Je sais que ceci a à voir avec l'allocation dynamique de mes matrices, mais je ne parviens pas à voir ce qui pose problème...
Merci de votre aide !!
Antdec
Partager