Задать вопрос
@TyGGer4ik

Почему компилятор выдает ошибку error: expected declaration or statement at end of input?

Мне дали дали задание написать функцию, которая создаёт массив массивов и протестировать её, ниже приведён код моей программы. При запуске компилятор выдаёт ошибку
sol.c: In function ‘print_arr’:
sol.c:46:1: error: expected declaration or statement at end of input
   46 | }
      | ^
которую я расценил как требование поставить ';', но вот в чём дело. точек с запятой хватает. Укажите пожалуйста в чём ошибка моей программы (прошу не обращать внимание на то, что я не освободил за собой память, я планировал это реализовать после пробного запуска и я уверен, что и без этого всё должно работать)

#include <stdio.h>
#include <stdlib.h>


int** get_array_of_arrays(unsigned int a){
    int** arr_arr = calloc(a, sizeof(int*));
    for (size_t i = 0; i < a; ++a){
        int b;
        scanf("%d", &b);
        arr_arr[i] = calloc(b, sizeof(int));
    }
    return arr_arr;
}


void fill_array(int** arr_arr){
    unsigned int len = sizeof(arr_arr)/sizeof(int*);
    for (size_t i = 0; i < len; ++i){
        unsigned int len_2 = sizeof(arr_arr[i])/sizeof(int);
        for (size_t j = 0; j < len_2; ++j){
            int filler;
            scanf("%d", &filler);
            arr_arr[i][j] = filler;
        }
    }
}


void print_arr(int** arr_arr){
    unsigned int len = sizeof(arr_arr)/sizeof(int*);
    for (size_t i = 0; i < len; ++i){
        unsigned int len_2 = sizeof(arr_arr[i])/sizeof(int);
        for (size_t j = 0; j < len_2; ++j){
            printf("%d\n", arr_arr[i][j]);
        }
}


int main(){
	int n;
	scanf("%d", &n);
	int** array_of_arrays = get_array_of_arrays(n);
	fill_array(array_of_arrays);
	print_arr(array_of_arrays);
    return 0;
}
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пропущена закрывающая фигурная скобка в print_arr
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы