Ошибка: чтобы получить пользовательский ввод для динамически размещенного 2D-массива - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь написать базовый массив фиксированного размера из динамически распределенного массива (для случая, когда мы знаем только одно измерение двумерного массива) и получить пользовательский ввод для матрицы.

Я узнал, что после того, как вы объявили динамически размещенную 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-массива, вызывающего эту ошибку. Пожалуйста, помогите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...