Bonsoir, je voudrais essayer de comprendre pourquoi le code suivant me produit une erreur de segmentation au niveau de la fonction initPlateau
affichage .c
Code:
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 #include "affichage.h" #include <stdio.h> #include <stdlib.h> Plateau** initPlateau() { Plateau** P=NULL; int k; int k2; for(k=0;k<TAILLE_PLATEAU_LARGEUR;k++) { for(k2=0;k2<TAILLE_PLATEAU_LONGUEUR;k2++) { **P[k][k2]=' '; } } return P; } void afficheLigne() { printf("\n_______________"); } void affichagePlateau(Plateau** P) { int k; int k2; for(k=0;k<TAILLE_PLATEAU_LARGEUR;k++) { afficheLigne(); for(k2=0;k2<TAILLE_PLATEAU_LONGUEUR;k2++) { printf("| %c |",**P[k][k2]); } } afficheLigne(); }
Code:
1
2
3
4
5
6
7
8
9
10 affichage.h #define TAILLE_PLATEAU_LARGEUR 5 #define TAILLE_PLATEAU_LONGUEUR 5 typedef char Plateau[TAILLE_PLATEAU_LARGEUR][TAILLE_PLATEAU_LONGUEUR]; Plateau** initPlateau(); void affichagePlateau(Plateau** P); void afficheLigne();
main
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <stdlib.h> #include <stdio.h> #include "affichage.h" int main() { Plateau** P; printf("OK\n"); // ==> S'affiche P=initPlateau(); printf("OK2\n"); // ==> Ne s'affiche pas affichagePlateau(P); return 0; }
Le but final est en fait un affichage au travers de Ncurses, mais j'aimerais d'abord comprendre ce qui cloche ici. Sachant que niveau syntaxique c'est correct, je dois faire quelque chose de travers dans initPlateau mais je ne vois pas où :(
Merci pour votre aide !
EDIT: Il est évident que l'erreur est sur la ligne d'affectation mais je ne comprends pas pourquoi !!!
(Le tableau ne serait pas alloué ? Pourtant il a bien une taille fixe donné c'est un tableau statique donc ça devrait passer normalement non ?)