试图扫描到二维malloc';d数组c编程

试图扫描到二维malloc';d数组c编程,c,C,我已经研究了很多关于二维malloc'd阵列的问题,但基本上因为任何原因我都找不到解决方案。。。。我的google fu sux抱歉=(.整天都在使用该网站获取语法帮助,不过感谢所有在这里提供帮助的人!) 无论如何,我似乎无法让这个fscanf正常工作=/如果有人能帮助我,我将不胜感激,因为我根本看不到任何错误,但我知道有一个错误,因为在这一点上,我的程序崩溃了 array1 = (int**)malloc((c)*sizeof(int*)); int a = 0, i

我已经研究了很多关于二维malloc'd阵列的问题,但基本上因为任何原因我都找不到解决方案。。。。我的google 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]);

    }
    }
array1=(int**)malloc((c)*sizeof(int*);
int a=0,i=0;
对于(a=0;a

其中c是所需阵列的最大大小。在这种情况下,它被设置为3,但我确实需要它作为变量使用
scanf
函数族读取值时,目标需要是指针
array1[a][i]
不是指针,它是一个实际值(scanf
scanf
将其视为指针,您现在进入了未定义行为的领域)

您需要的是
&array1[a][i]

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

fscanf接受指针,因此我认为您需要在其第三个参数前面加上一个与符号。编译器没有警告您吗?

您想要:

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

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

替换这个
fscanf(ifp,“%d”,数组1[a][i])

fscanf(ifp、%d、&array1[a][i])

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


请养成阅读手册的习惯。这很有帮助。

“我已经看了很多问题”-欢迎来到Stack Overflow。多解释一下为什么你建议的改变是相关的,这不是一个坏主意。好吧,我肯定错过了一些概念上的东西。我认为数组[i][j]语法是所述地址的指针,因此i,j。在扫描时,它对字符串的工作方式是否不同?因为我的字符串扫描不需要&(ie:address)@user2053368字符串已经是指针了,所以这里不需要运算符的地址。如果您有一个指针
p
和一个索引
i
,那么表达式
p[i]
就是该索引处的值,要获得该值的地址(即指针),您可以使用操作符
&
的地址,如
&p[i]
中所述。哇哦,以前从未见过。。。谢谢你的介绍我现在就去看看