0

我已经查看了很多关于二维 malloc 数组的问题,但基本上无论出于何种原因我都找不到解决方案....感谢所有在这里提供帮助的人!=)

无论如何,我似乎无法让这个 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,但我确实需要它作为变量

4

5 回答 5

5

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

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

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

于 2013-02-08T06:31:44.730 回答
1

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

于 2013-02-08T06:32:33.863 回答
1

你要:

fscanf(ifp, "%d", &array1[a][i]);
                  ^
于 2013-02-08T06:33:19.620 回答
1

malloc 和其他语法是正确的,问题在于将值读取到数组

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

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

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

于 2013-02-08T06:34:06.863 回答
0

你需要阅读这个。

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

于 2013-02-08T06:39:22.713 回答