Bonjour,

Pouvez m'aider à comprendre d'où vient cette erreur de segmentation lorsque je lance ce programme, et qu'est qu'elle signifie ?

Dans ce programme je chercher à afficher le plateau du jeu reversi de taille 8*8. Les contraintes sont d'utiliser un tableau à 2 dimensions, et la fonction malloc pour pouvoir ensuite créer une fonction qui efface proprement le plateau de la mémoire.

Merci d'avance pour votre aide !

Je souhaite obtenir ceci :
Nom : Capture du 2016-09-24 16-20-14.png
Affichages : 261
Taille : 23,5 Ko

voici mon code source (supposé être en langage c :

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
120
121
122
123
124
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
 
#define BLACK_STONE 'X'
#define WHITE_STONE 'O'
#define EMPTY_STONE '_'
 
 
size_t board_size;//variable globale
 
void board_init(size_t width, char **board)
{
  size_t i,j;
  board_size=width+1;
  size_t size = width+1;
  board = malloc(size*sizeof(char*));
  if(board==NULL)
    {
      fprintf(stderr,"Error during the memory allocation.\n");
      exit(EXIT_FAILURE);
    }
  for(i=0;i<size;i++)
    {
      board[i]=malloc(size*sizeof(char));
      if(board[i]==NULL)
	{
	  fprintf(stderr,"Error during the memory allocation.\n");
	  exit(EXIT_FAILURE);
	}
    }
   char a = 'A';
   int k = 0;
 
    board[0][0]=' ';
 
    for (i=1;i<size;i++)
    {
        board[i][0]=a;
        a++;
    }
 
    for (j=1;j<size;j++)
    {
        board[0][j]= k;
        k++;
    }
 
    int m = size/2;
    int n = size/2+1;
    for (i=1;i<size;i++)
    {
        for (j=1;j<size;j++)
        {
            if (i == m && j == m)
	      board[m][m]=BLACK_STONE;
            else if (i == m && j == n)
	      board[m][n]=WHITE_STONE;
            else if (i == n && j == m)
	      board[n][m]=WHITE_STONE;
            else if (i == n && j == n)
	      board[n][n]=BLACK_STONE;
            else
	      board[i][j]=EMPTY_STONE;
        }
    }
    printf("\n");
}
 
void display_board(size_t width, char **board)
{
  size_t i,j;
    size_t size = width+1;
    int m = size/2;
    int n = (size/2)+1;
    printf("%4c",board[0][0]);
    for (j=1;j<size;j++)
    {
        printf("%4d",board[0][j]);
    }
    printf("\n");
    for (i=1;i<size;i++)
    {
        for (j=0;j<size;j++)
        {
            if (i == m && j == m)
                printf("%4c",board[m][m]);
            else if (i == m && j == n)
                printf("%4c",board[m][n]);
            else if (i == n && j == m)
                printf("%4c",board[n][m]);
            else if (i == n && j == n)
                printf("%4c",board[n][n]);
            else
                printf("%4c",board[i][j]);
        }
        printf("\n");
    }
}
 
void board_delete(char **board)
{
  size_t i;
  for(i=0;i<board_size;i++)
    {
    free(board[i]);
    }
  free(board);
}
 
 
int main(int argc, char* argv[])
{
  char **board;
  board_init(8,board);
  //display_board(8,board);
  // board_delete(board);
  printf("%4c",board[2][3]);
 
  return EXIT_SUCCESS;
}