0

我想在我的函数中返回n- 矩阵的大小 - 以及矩阵本身*p

该文件类似于,例如,

3
10
20
30

这就是我所说的:

main( )
{
    int n, *p;
    n = Load_Matrix( p );
}

int Load_Matrix( int **ptr )
{
    FILE *fp;
    int i, a, n;
    fp = fopen( "matrix.txt", "r" );
    if ( fp == NULL )
    {
        printf( "Cannot load file\n" );
        return 0;
    }
    fscanf( fp, "%d", n );
    *ptr = (int *) malloc( sizeof(int) *n );
    for ( i = 0; i<n; i++ )
    {
        fscanf( fp, "%d", &a );
        *( ptr + i ) = a;
    }
    fclose( fp );
    return n;
}
4

2 回答 2

1

您正在递增传递的指针 ptr 的地址,而不是指针本身。

线路*( ptr + i ) = a;错了。它应该是(*ptr)[i] = a;

还要在 main 中传递指针的地址

int n, *p;
n = Load_Matrix( &p );

而且这条线fscanf( fp, "%d", n );是错误的。fscanf() 需要 n 的地址。

并且仍然存在一些小错误,例如 Load_Matrix() 的函数原型,int main( void ),检查所有返回值

于 2014-03-17T21:46:38.537 回答
0

这个 :

 n=Load_Matrix(p); 

应该

n=Load_Matrix(&p);

正如Load_Matrix期望得到指针的指针。这也是

 fscanf( fp, "%d", n );

应该

  fscanf( fp, "%d", &n );
于 2014-03-17T21:43:05.523 回答