我想在函数中返回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;
}
答案 0 :(得分:1)
您正在递增传递的指针ptr的地址,而不是指针本身。
第*( ptr + i ) = a;
行是错误的。它应该是(*ptr)[i] = a;
还传递主
中指针的地址int n, *p;
n = Load_Matrix( &p );
行fscanf( fp, "%d", n );
错了。 fscanf()需要一个地址n。
还存在一些小错误,比如Load_Matrix()的函数原型,int main(void),检查所有返回值
答案 1 :(得分:0)
这个:
n=Load_Matrix(p);
应该是
n=Load_Matrix(&p);
因为Load_Matrix
期望获得指向指针的指针。
也是这个
fscanf( fp, "%d", n );
应该是
fscanf( fp, "%d", &n );