bonsoir mes amis

je suis en train d'écrire un programme de démineur il est pas complet encore mon problème est avec la fonction init qui initialise le tableau t de l ligne et c colonne avec m mines repartie aléatoirement
erreur segmentation fault apparaît au niveau de cette fonction je ne peut pas détecter mon erreur
peut être vous pouvez m'aider a la trouver
merci beaucoup

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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define droite 77
#define gauche 75
#define haut 72
#define bas 80
#define drapeau 32
#define revele 13
typedef struct
{
    int x,y;
} mycoord;
void gotoligcol(int lig, int col)
 
{
    COORD mycoord;
    mycoord.X = col;
    mycoord.Y = lig;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),mycoord);
}
 
typedef struct
{
    char etat;
    int contenue;
} t_case;
 
void init(t_case **t,int l,int c,int m)
 
{
    int mx,my,Compt,x,y;
    for(mx=0; mx<l; mx++)
    {
        for(my=0; my<c; my++)
        {
            t[mx][my].contenue=0;
 
        }
    }
    for (Compt=0; Compt<m; Compt++)
    {
        mx=rand()%l;
        my=rand()%c;
        if(t[mx][my].contenue==0)
        {
            t[mx][my].contenue=-1;
        }
 
        else
        {
            m++;
        }
 
 
    }
    for(mx=0; mx<l; mx++)
    {
        for(my=0; my<c; my++)
        {
            printf("%c",t[mx][my]);
        }
        printf("\n" );
    }
}
 
int nb_mines(t_case **t,int i, int j)
{
    int N;
 
    if (t[i][j].contenue==-1)
    {
        gotoligcol(i,j);
        printf("BOOM, tu as perdu!!\n");
        printf("Voici la grille des mines\n");
 
        for(i=0; i<10; i++)
        {
            for(j=0; j<10; j++)
            {
                printf("%c",t[i][j].contenue);
            }
            printf("\n" );
        }
        return (0);
    }
    else if (t[i - 1][j].contenue== -1) //compteur indiquant le nombre de mines à proximité
        N++;
    else if (t[i+ 1][j].contenue== -1)
        N++;
    else if (t[i][j -1].contenue== -1)
        N++;
    else if (t[i][j +1].contenue== -1)
        N++;
    else if (t[i - 1][j - 1].contenue == -1)
        N++;
    else if (t[i + 1][j - 1].contenue == -1)
        N++;
    else if (t[i + 1][j + 1].contenue == -1)
        N++;
    else if (t[i - 2][j + 1].contenue == -1)
        N++;
    else
        N= 0;
    printf("%d",N);
    N=0;
}
 
 
void main()
{
    char curseur,choix;
    int i,j,k,niv,l,c,m;
    int N_mine_around;
    t_case **t;
 
    printf("\n\t\t\t\tJEU   DEMINEUR\n\t\t\t\t--------------");
 
    printf("\n\n\t\t\t\t*** NIVEAU *** \n\n\t\t\t\t1.simplifiee\n\t\t\t\t2.normal\n\t\t\t\t3.dur\n\t\t\t\t4.personalisee\n\t\t\n\t\t\t\t\n\t\t\t\tChoix : ");
    scanf("%d",&niv);
    while(niv!=1 && niv!=2 && niv!=3 && niv!=4)     // Choix du niveau
    {
        printf("\nErreur de saisie , veuillez choisir un niveau : ");
        scanf("%d",&niv);
    }
    if (niv==1)
    {
        m=15;
        l=c=10;
    }
    else if (niv==2)
    {
        l=c=15;
        m=45;
    }
    else if (niv==3) // Détermine le nombre de mines par rapport au niveau
    {
        l=c=20;
        m=90;
    }
    else
    {
        printf("donner le nombre des lignes l:");
        scanf("%d",&l);
        printf("donner le nombre des colonnes c:");
        scanf("%d",&c);
        printf("donner le nombre des mines m:");
        scanf("%d",&m);
 
    }
    init(t,l,c,m);
 
}