我明白
"Debug assertion failed"
当我尝试编译此代码时出错。
有人可以解释一下这是怎么回事吗?我认为我对 fscanf 函数做错了。 谢谢。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void input(FILE *fp, int **a,int m)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
fscanf(fp, "%d\n", *(a+i)+j);
}
}
}
int main()
{
FILE*fp;
int m,n,**a,i,j;
scanf("%d",&m);
fp=fopen("abc.txt","r");
a=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
*(a+i)=(int*)malloc(m*sizeof(int));
input(fp,a,m);
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",*((a+i)+j));
}
printf("\n");
}
free(a);
return 0;
}
最佳答案
这里有几个问题,但为了直接回答您的问题,您没有向 fscanf()
提供存储找到的整数的地址。
在不知道你的意图的情况下,我举个例子:
fscanf( fp, "%d\n", &(a[i]) );
这表示数组 a
的第 第
元素是要被(覆盖)写入的元素。因此,如果 a[i]
是一个 int 指针,您可以在其中传递 &( (a[i])[j] ) 。
此外,我认为您打算替换:
*(a+i)=(int*)malloc(m*sizeof(int));
与
a[i] = (int*) malloc(m*sizeof(int));
关于c - 用 C 将文件读取到矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948893/