【发布时间】:2015-05-28 16:32:36
【问题描述】:
好的,我有一个 int 的二维数组,它使用这个来创建:
int **matrix;
matrix = malloc(n * sizeof(int*));
for (int i = 0; i < n ; i++) {
matrix[i] = malloc(sizeof(int));
}
现在我将每个字段都设置为 0。 下一步是用值填充它。因此,我从已打开的文件中读取值。
while (fscanf(f2, "%s -> %[^;\n]%*c", start, ziel) == 2) {
intomatrix(start, ziel, &graph);
}
intomatrix 只是改变数据并将其放入矩阵中
matrix[start][ziel] = 1;
现在当我手动设置时(不使用while循环)
matrix[2][0] = 1
并打印矩阵。不仅 (2,0) 而且 (0,4) 设置为 1。 现在应该有使用 matrix[0][4] 的方式了。
这也发生在其他领域。 (2,0) 也设置 (1,4)。
【问题讨论】:
-
matrix[i] = malloc(sizeof(int));分配 1 个元素的数组。应该是matrix[i] = malloc(ELEMENTS*sizeof(int)); -
哇...@WeatherVane 这就是问题所在。现在它解决了。谢谢 :)