Bonjour,

je suis débutant et je veux comprendre comment utiliser les tableaux dynamiques 3D, j'ai fait un code qui construit un tableau 3D "A" de dimension axbxc ; a,b et c sont obtenus depuis un fichier taille.dat.

exemple de taille.dat :
mon code est le suivant :
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int  a,b,c,i,j,k;
    float ***A; // A est un tableau 3D de taille axbxc
    FILE *f_in;
 
    /*  Lecture des dimensions du tableau depuis un fichier "taille.dat" */
    f_in=fopen("taille.dat","r");
    if (f_in== NULL)
{
    printf("Impossible d'ouvrire le fichier taille.dat");
    exit(1);
}
fscanf(f_in, "%i %i %i\n",&a, &b, &c);
printf("a = %i; b = %i; c = %i\n",a,b,c); // affichage des valeurs de a, b ,c
    /* construction du tableau 3D A */
    A=malloc(sizeof*A*a);
 
     if ( A == NULL )
{
     printf("Allocation impossible \n");
     exit(1);
}
 
  for (i=0;i<a;i++)
  {
      A[i]=malloc(sizeof*A[i]*b);
      for (j=0;j<b;j++)
      {
          A[i][j]=malloc(sizeof*A[i][j]*c);
      }
  }
 
/* Initialisation de tous les éléments de A à 0 ensuite remplissage de A et affichage */
for (i=0;i<a;i++)
  {
      for (j=0;j<b;j++)
      {
          for (k=0;k<c;k++)
          {
 
               A[i][j][k]=0; // initialisation de tous les éléments de A
               A[i][j][k]=A[i][j][k]+0.5; // exemple d'operation sur les éléments de A
               printf("A[%i][%i][%i] = %f\n", i, j,k, A[i][j][k]); // affichage des élément du tableau
          }
 
      }
  }
free(A);
return 0;
}
le compilateur signale des erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
line 20    error: invalid conversion from 'void*' to 'float***'
line 30    error: invalid conversion from 'void*' to 'float**' 
line 33    error: invalid conversion from 'void*' to 'float*'
merci de corriger mon code si c'est possible.