I'm probably just being stupid, but I can't figure out for the life of me why I'm still getting a segmentation fault on this one... any suggestions?
Code:
#include <stdio.h>
#include <stdlib.h>
int ** MatrixMult( int **A, int **B, int n );
int main( int argc, char *argv[] ) {
int **x, **y, n, i, j;
FILE *fin;
fin = fopen( argv[1], "r" );
fscanf( fin, "%d", &n );
x = ( int ** ) malloc( sizeof( int ) * n );
y = ( int ** ) malloc( sizeof( int ) * n );
for( i = 0; i < n; i++ ){
x[i] = ( int * ) malloc( sizeof( int ) * n );
y[i] = ( int * ) malloc( sizeof( int ) * n );
}
for( i = 0; i < n; i++){
for( j = 0; j < n; j++){
fscanf( fin, "%d", &n );
x[i][j] = n;
}
}
for( i = 0; i < n; i++ ){
for( j = 0; j < n; j++ ){
fscanf( fin, "%d", &n );
y[i][j] = n;
}
}
y = MatrixMult( x, y, n );
fclose ( fin );
return 0 ;
}
int ** MatrixMult ( int **A, int **B, int n ){
int **z, i, j, k;
z = ( int ** ) malloc( sizeof(int) * n );
for ( i = 0; i < n; i++ ){
z[i] = ( int * ) malloc( sizeof(int) *n );
}
for ( i = 0; i < n; i++ ){
for ( j = 0; j < n; j ++ ){
for ( k = 0; k < n; k ++ ){
z[i][j] += A[i][k] * B[k][j];
}
}
}
return z;
}