Affichage des elements d'une matrice en C
Résolu/Fermé
A voir également:
- Afficher une matrice en c
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
- Afficher mot de passe wifi android - Guide
- Afficher appdata - Guide
- Afficher un tableau en c - Forum C
- Vous ne pouvez pas modifier une partie de matrice - Forum Excel
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
17 janv. 2010 à 09:53
17 janv. 2010 à 09:53
Salut,
Comme dit loupius : T.el[i,j] ne fera pas ce que tu souhaites. Si tu veux une matrice il faut utiliser T.el[i][j].
Ensuite pour utiliser getch(), tu dois inclure conio.h ou encore mieux, utiliser getchar(); (fonction standard).
Et enfin l'erreur vient d'une mauvaise allocation mémoire.
T.el=(int**) malloc(T.n_lig*T.n_col*sizeof(int));
Tu alloues un seul tableau d'une dimension. Toi ce que tu veux, c'est un tableau 2D.
Il faudrait donc faire :
Et enfin, il ne faut surtout pas oublier de libérer les zones allouées avec free.
cdlt,
Comme dit loupius : T.el[i,j] ne fera pas ce que tu souhaites. Si tu veux une matrice il faut utiliser T.el[i][j].
Ensuite pour utiliser getch(), tu dois inclure conio.h ou encore mieux, utiliser getchar(); (fonction standard).
Et enfin l'erreur vient d'une mauvaise allocation mémoire.
T.el=(int**) malloc(T.n_lig*T.n_col*sizeof(int));
Tu alloues un seul tableau d'une dimension. Toi ce que tu veux, c'est un tableau 2D.
Il faudrait donc faire :
T.el=malloc(T.n_lig*sizeof(int)); if (T.el==NULL) { ... } for(i=0;i<T.n_lig;i++) { T.el[i]=malloc(T.n_col*sizeof(int)); if (T.el[i]==NULL) { ... } }
Et enfin, il ne faut surtout pas oublier de libérer les zones allouées avec free.
for(i=0;i<T.n_lig;i++) { free(T.el[i]),T.el[i]=NULL; } free(T.el),T.el=NULL;
cdlt,
17 janv. 2010 à 14:32