Programme qui fonctionne mais qui ne devrait pas (tableau 2D char)
Bonjour,
J'ai fait un tableau 2d de caractères avec un nombre de colonne qui varie (ligne 0= 2 colonnes; ligne 1 = 4 colonnes, ligne2= 3colonnes et ligne4 = 6 colonnes).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <stdio.h>
#include <stdlib.h>
int main(void) {
int ligne = 4;
int col[4] = {2,4,3,6};
char ***tableau=NULL;
tableau = malloc(ligne * sizeof tableau);
for(int i =0; i < ligne; i++)
{
tableau[i]= malloc(col[i]*sizeof tableau[i]);
for(int j=0; j<col[i];j++)
{
tableau[i][j] = malloc(3 * sizeof *tableau[i][j]);
sprintf(tableau[i][j],"Aaaaaaaaaaaaaaaaaaaa");
printf("%d %d %s \n",i,j,tableau[i][j]);
}
}
return 0;
} |
Mon soucis se trouve ici
Code:
1 2
| tableau[i][j] = malloc(3 * sizeof *tableau[i][j]);
sprintf(tableau[i][j],"Aaaaaaaaaaaaaaaaaaaa"); |
Je pensais que le "3" représentait le nombre de caractères et donc dès que j'allais dépasser 3 caractères (ou 2 + \0), le programme allait planter.
Mais ce ne fut pas le cas....