错误:获取动态分配的2D数组的用户输入

时间:2019-03-30 05:46:56

标签: c multidimensional-array scanf calloc

我正在尝试编写一个动态分配的数组的基本固定大小数组(当我们只知道2D数组的一个维时),并获取矩阵的用户输入。

我了解到,在声明动态分配的2D矩阵之后,您可以像访问固定长度的2D数组一样对其进行访问。 因此,我尝试使用scanf为动态分配的2D数组获取用户输入,就像我对固定长度的2D数组所做的一样。

对于固定长度的2D数组,我做到了并且有效:

long bar[3][3];

printf("input 9 elements: ");

for (r = 0; r < 3; r += 1) {

    for (c = 0; c < 3; c += 1) {

        scanf("%ld", &bar[r][c]);

    }

}

但是当我对动态分配的数组的固定大小的数组执行此操作时:

long *buckets[3], no_of_cols, no_of_rows, c;

printf("number of elements in each cols: ");
scanf("%ld", &no_of_cols);
for (no_of_rows = 0; no_of_rows < 3; no_of_rows += 1) {
buckets[no_of_rows] = calloc( no_of_cols, sizeof(long));
}

long m = no_of_cols * 3;
printf("input %ld elements: ", m);
for (no_of_rows = 0; no_of_rows < 3; no_of_rows += 1) {
    for(c = 0; c < no_of_cols; c += 1) {
    scanf("%ld" &buckets[no_of_rows][c]);
    }
}

我希望程序将用户输入写入阵列存储桶。但是当我运行该程序时,出现了此错误:

error: invalid operands to binary expression
  ('char *' and 'long')
            scanf("%ld" &buckets[no_of_rows][c]);

我不明白我为动态分配的2D数组做错了什么导致了此错误。请帮助我。

0 个答案:

没有答案