Creo que la reserva de memoria está bien lo que me falla es al intentar cambiar un valor y nose porque.
He probado haciendo m[j]=0;
Lo que quiero es hacer un scanf("%f",m[j]);
Código
#include <stdio.h> #include <stdlib.h> void reserva(float **w,int filas,int columnas) { int i,j; w = (float**) calloc(filas,sizeof(float *)); for(i=0;i<columnas;i++) { w[i] = (float *) calloc(columnas,sizeof(float)); } } int main() { int numeroalumnos; int numeronotas; float **m; int i,j; printf("Cuantos alumnos?: "); scanf("%d",&numeroalumnos); printf("Cuantas notas por alumno?: "); scanf("%d",&numeronotas); reserva(m,numeroalumnos,numeronotas); for(i=0;i<numeroalumnos;i++) { printf("Alumno %d\n",i+1); for(j=0;j<numeronotas;j++) { printf("\tNota %d: ",j+1); m[i][j]=0; //Esto me falla } printf("\n"); } return 0; }