[C] probleme de tableau d'int
Résolu
Bleast
-
Bleast Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bleast Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
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