我已经研究了很多关于二维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]);
始终启用编译器警告,并注意:)
您需要阅读这篇文章。
请养成阅读手册的习惯。它帮助很大。