Bonjour

Je travaille sur un projet et je ne heurte a un seg fault qui me resiste.

Je cherche a recopier une map (carre de nb_line sur len_line) mais je n'arrive pas a mallocer un tableau a plus d'une dimension

Voila le bout de code qui fait des siennes :

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
char	**declare(int nb_line, int len_line, char *path)
{
  char	**mat;
  int	fd;
  int	x;
  int	y;
 
  y = 0;
  /*Dans cette partie je bloque*/
  while (y <= nb_line)
    {
      if((mat[y] = malloc((len_line + 1) * sizeof(*mat))) == 0)
	{
	  my_putstr("Error: Could not malloc\n");
	  return (0);
	};
      y++;
    }
  /*J'ouvre le fichier*/
  if ((fd = open(path, O_RDONLY)) <= 0)
    my_putstr("Error: File can't be open in function nb_line\n");
  /*Je passe la premiere ligne car je ne dois pas la recopier et je la traite ailleurs*/
  mat[0][0] = 2;
  while (mat[0][0] != '\n')
    if (read(fd, &mat[0][0], BUF_SIZE) <= 0)
      return (0);
  /*Je recopie ma map*/
  y = 0;
  while (y <= nb_line)
    {
      x = 0;
      while (x <= len_line)
	{
	  read(fd, &mat[y][x], BUF_SIZE);
	  x++;
	}
      y++;
    }
  close(fd);
  return (mat);
}
Voila si vous avez une idee ou que vous voyez une erreur (pas besoin de dire que mon code est moche ca je l'avais vu XD) n'hesitez pas a m'expliquez

Merci