[C] probleme de tableau d'int
Résolu
Bleast
-
Bleast Messages postés 34 Statut Membre -
Bleast Messages postés 34 Statut Membre -
OS : Netbsd beta 3.0
archi : i386
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.
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:
- [C] probleme de tableau d'int
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Salut,
A mon avi s cette ligne doit être mise dans la boucle de niveau supérieur.
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
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