Hi, I'm inspired with the similar thread on this board.

I know how to allocate 2D array:

Code:

int main (void)
{
int rows, cols, i, j;
int** matrix;
int* rawdata;
scanf("%d %d",&rows, &cols);
rawdata = malloc(rows * cols * sizeof(int));
matrix = malloc(rows * sizeof(int*));
for (i = 0; i < rows; ++i)
{
matrix[i] = &rawdata[i * cols];
}
for (i = 0; i < rows; ++i)
{
for (j = 0; j < cols; ++j)
{
scanf("%d",&matrix[i][j]);
}
}
free (matrix);
free (rawdata);
return 0;
}

Now, I don't know is it possible to extend this logic and to allocate 3D array. I tried something, but I cannot wrap my mind.

here's my shot:

Code:

int main (void)
{
int a, b, c, i, j,k;
int ***array_3D;
int* rawdata;
int** matrix;
scanf ("%d %d %d", &a, &b, &c);
rawdata = malloc (a * b * c * sizeof(int));
matrix = malloc (a * sizeof(int*));
array_3D = malloc(c * sizeof(int**));
for (i = 0; i < a; ++i)
{
matrix[i] = & rawdata[i * b];
}
/* Now this is where all is messed up
for (i = 0; i < c; ++i)
{
/*Possible nested loop, but ???*/
}
for (i = 0; i < a; ++i)
for (j = 0; j < b; ++j)
for (k = 0; k < c; ++k)
scanf("%d",&array_3D[i][j][k]);
/*appropriate cleanup*/
return 0;
}

Can you help me write it?

I tried to do it myself but I didn't have success and I'm asking for your help.

Thanks

- Micko