尝试扫描到 2-D malloc'd 阵列 C 编程

  • 本文关键字:阵列 编程 malloc 扫描 2-D
  • 更新时间 :
  • 英文 :


我已经研究了很多关于二维malloc'd数组的问题,但无论出于什么原因,我都找不到解决方案。。。。我的谷歌fu-sux抱歉=(.整天都在使用该网站寻求语法帮助,但感谢所有在这里提供帮助的人!=)

无论如何,我似乎无法让这个fscanf工作=/如果有人能帮助我,我将不胜感激,因为我根本看不到任何错误,但我知道有一个错误,因为正是在这一点上,我的程序崩溃了。

    array1 = (int**)malloc((c)*sizeof(int*));
        int a = 0, i = 0;
        for (a = 0; a < c; a++){
            array1[a] = (int*)malloc((c+1)*sizeof(int));
        }
    a=0;
    for(a = 0; a < c; a++){
                for(i = 0; i < c; i++){
                fscanf(ifp, "%d", array1[a][i]);
    }
    }

其中c是所需阵列的最大大小。在这种情况下,它被设置为3,但我确实需要它作为一个变量

使用scanf函数族读取值时,目标必须是指针。array1[a][i]不是指针,而是实际值(scanf将其视为指针,您现在进入了未定义行为的区域)。

你想要的是&array1[a][i]

PS。您不应该强制转换malloc的返回值。

fscanf接受指针,所以我认为您需要在它的第三个参数前面加一个与号。编译器没有警告过你吗?

您想要:

fscanf(ifp, "%d", &array1[a][i]);
                  ^

malloc和其他syntext是正确的,问题是读取数组的值

替换此fscanf(ifp, "%d", array1[a][i]);

带有

fscanf(ifp, "%d", &array1[a][i]);

始终启用编译器警告,并注意:)

您需要阅读这篇文章。

请养成阅读手册的习惯。它帮助很大。

最新更新