Problema con malloc

Rafael
30 de Abril del 2004
A ver si alguien me dice como puedo crear una matriz tridimensional de forma dinamica.
La matriz seria matriz[dinamico][3][5], es que tengo un segmentation fault y no hay manera de quitarlo.
El problema es el siguiente:
Gestionar dinámicamente una matriz tridimensional. Se desean guardar las calificaciones de alumnos que cursan una titulación de 3 años lectivos, en las que cada curso se compone de 5 asignaturas, mediante una matriz dinámica tridimensional.
La primera dimensión (fila) esta reservada para los alumnos (cada fila representa por tanto los datos de una alumno concreto y ese numero identifica al alumno). La segunda dimensión (columna) representa un curso concreto, de los tres posibles. La tercera dimensión representa una asignatura concreta, de las 5 posibles. Por tanto, si la matriz es M, M[a][b][c] contendrá la calificación del alumno identificado por 'a', en el curso 'b' y en la asignatura 'c'.
Se dispone de un fichero texto (Alumnos.txt), que habrá que generar al principio con cualquier editor de textos, en el que en cada fila aparecen los datos de cada alumno. Estos datos, separados por un espacio en blanco son: Identificador del alumno (numero entero) y DNI (cadena de 10 caracteres).El identificador comienza en 1 (primera línea) y cada línea contiene el siguiente (2, 3, etc...).
Se dispone de un fichero binario (Alumnos.bin), que habrá que generar desde el programa, en el que cada línea contiene los datos identificativos del alumno: DNI, Apellidos y Nombre y numero de años que lleva matriculado en la titulacion.

Realizar un programa con opciones que permita:

Crear el fichero binario Alumnos.bin partiendo de los datos del fichero Alumnos.txt. El programa deberá recoger el DNI, de Alumnos.txt, y preguntar al usuario Apellidos, Nombre y Numero de años.
A partir del fichero Alumnos.bin, el programa deberá crear la matriz tridimensional y preguntar al usuario las calificaciones de cada alumno, en cada curso y en cada asignatura para insertarla en la matriz.

chuidiang
30 de Abril del 2004
Hazte un tipo para las asignaturas de cada alumno

typedef int asignaturas[5][3];

Ahora solo tienes que tratar la matriz como de una dimensión, pero tienes los tres indices

asignaturas *Matriz;
Matriz = (asignaturas *)malloc (numero_alumnos * sizeof(asignaturas));

...
Matriz[alumno][i][j] = nota;
...

Prueba a ver si te sirve


Se bueno.