c - 用 C 将文件读取到矩阵

标签 c matrix malloc free scanf

我明白

"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/

相关文章:

c - 带有数组数组的 memcmp

c - 如何从 C 执行 Bash 程序?

c - undefined reference 'shm_open' ,已在此处添加 -lrt 标志

r - 取矩阵 r 中行的平均值

algorithm - 使用排列组合遍历 N*N 矩阵的方法数

algorithm - 图上的谜题

c - 如何为指向 int 的指针数组正确释放动态分配的内存

c - 指向结构的指针的 ANSI C 内存分配抛出非致命运行时错误

c - 函数中的 malloc 不能正常工作

c++ - Xlib:XGetWindowAttributes 总是返回 1x1?