arr
- указатель на указатель на int
, поэтому сначала установите указатель на int
(перед его использованием в качестве массива), выполнив *arr
.
Так что
scanf("%d", &arr[i]);
должно быть
scanf("%d", &(*arr)[i]);
или его более коротким эквивалентом
scanf("%d", *arr + i);
Не связано, но в C оно должно быть не менее
int main(void)
Не связано ^ 2: Размеры и индексы в C best определяются с помощью size_t
(идет с stdlib.h
).
Таким образом, соответствующая часть вашего кода будет выглядеть так:
int main(void)
{
size_t count;
int *numbers;
scanf("Enter the amount of numbers to enter: %zu", &count);
...
int initialize(int **arr, size_t count)
{
size_t i = 0;
*arr = calloc(count, sizeof(int));
while (i < count)
...
И, наконец, код не пропускает проверку ошибок для соответствующих функций:
Проверка ошибок (вместе с регистрацией ошибок) отлаживается бесплатно!