[C] probleme de tableau d'int

Résolu/Fermé
Bleast - 28 déc. 2005 à 23:49
Bleast Messages postés 34 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 5 janvier 2009 - 29 déc. 2005 à 01:31
OS : Netbsd beta 3.0
archi : i386

int		save(char **av, t_mlx *mlx)
{
  char		***tab;
  char		*str;
  int		**map;
  int		y;
  int		fd;
  int		x;
  int		z;

  y = 0;
  if ((fd = open(av[1], O_RDONLY)) == -1)
    {
      my_putstr("Can't open file\n");
      exit (1);
    }
  while (get_next_line(fd))
    y++;
  map = malloc((y+1) * sizeof(int*));
  tab = malloc((y+1) * sizeof(char*));
  close(fd);
  fd = open(av[1], O_RDONLY);
  y = 0;
  while (str = get_next_line(fd))
    {
      tab[y] = my_str_to_wordtab(str);
      y++;
    }
  for (x = 0 ; tab[0][x] != '\0' ; x++)
    z++;
  for (y = 0 ; tab[y] != '\0' ; y++)
    {
      for (x = 0 ; tab[y][x] != '\0' ; x++)
        {
          map[y] = malloc((z+1) * sizeof(int**));
	  map[y][x] = my_getnbr(tab[y][x]);
	  my_putnbr(map[y][x]);
	  my_putchar(' ');
	}
      my_putchar('\n');
    }
  my_putnbr(map[0][0]);
  my_putchar('\n');
  close(fd);
  image(map, mlx);
  free(tab);
  free(map);
}


Bonjour a tous,

j'ai le code suivant je copie des valeur numerique d'un char*** vers un tableau d'int a 2 dimmensions la copie se passe bien l'affichage est correcte voir ci dessous :

50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 50 50 0 0 0 0 0 0 0 50 50 50 0 0 0 0 0
0 0 0 50 50 0 0 0 0 0 0 0 50 50 50 50 0 0 0 0
0 0 0 50 50 0 0 0 0 0 0 50 50 0 50 50 50 0 0 0
0 0 0 50 50 0 0 0 0 0 0 50 50 0 0 50 50 0 0 0
0 0 0 50 50 0 0 0 0 0 0 50 50 0 0 50 50 0 0 0
0 0 0 50 50 0 0 0 0 0 0 0 0 0 0 50 50 0 0 0
0 0 0 50 50 50 50 50 0 0 0 0 0 0 50 50 50 0 0 0
0 0 0 50 50 50 50 50 0 0 0 0 0 50 50 50 0 0 0 0
0 0 0 50 50 50 50 50 0 0 0 0 50 50 50 0 0 0 0 0
0 0 0 0 0 50 50 0 0 0 0 50 50 50 0 0 0 0 0 0
0 0 0 0 0 50 50 0 0 0 0 50 50 0 0 0 0 0 0 0
0 0 0 0 0 50 50 0 0 0 0 50 50 50 50 50 50 0 0 0
0 0 0 0 0 50 50 0 0 0 0 50 50 50 50 50 50 0 0 0
0 0 0 0 0 50 50 0 0 0 0 50 50 50 50 50 50 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

mais lorsque a la fin de mon code je demande l'affichage de map[0][0] j'ai 0 qui s'affiche alors que ca devrai etre 50 est ce que quelqu'un peu m'aider ?

Merci.
A voir également:

2 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
29 déc. 2005 à 00:11
Salut,
A mon avi s cette ligne doit être mise dans la boucle de niveau supérieur.
map[y] = malloc((z+1) * sizeof(int**));

A chaque x d'un y, tu écrases ton vecteur d'y.
De plus, dans le vecteur map[y] tu cherche à stocker des int et pas de int**.
Pour les types dans un tableau dynamique à 2 dimension
map[y][x] => int
map[y] => int *
map => int**
Autre gag, le 'free' pour map ne va pas libérer la mémoire alloué par tout tes
vecteurs. Fais en premier lieu une boucle de free sur tes map[y].
A+, crabs
0
Bleast Messages postés 34 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 5 janvier 2009 15
29 déc. 2005 à 01:31
merci bcou crabs ca fonctionne ;)
0