Считывание цифр в массив и его сортировка

Задача такова: осуществить заполнение файла цифрами с помощью функции genaration() - массив тут использовать нельзя. Затем считать цифры в массив функцией read_file() в массив и отсортировать его методом быстрой сортировки. Вывести на консоль.

Код написал, как по логике сам его понял, но на консоль после сортировки выводится набор значений, как выводится при ошибке с нехваткой памяти, рандомные числа с минусами иногда.

Помогите разобраться пожалуйста.

#include <stdio.h>
#include <stdlib.h>
#define N 10
#define A -25000
#define B 25000

void generation();
void read_file();
void method_simple_sort();
int main(void) {
    generation();
    method_simple_sort();
    return EXIT_SUCCESS;
}

void generation() {
    FILE *file;
    int i;
    file = fopen("index.txt", "w");
    srand(time(0));
    for (int i = 0; i < N; i++) {
        fprintf(file, "%d\n", A + rand() % (A - B + 1));
    }
    fclose(file);
}

void read_file() {
    FILE *file;
    int i, a[N] = { 0 };
    file = fopen("index.txt", "r");
    for (i = 0; i < N; i++) {
        fscanf(file, "%d ", &a[i]);
    }
    fclose(file);
    for (int i = 0; i < N; i++)
        printf("%d ", a[i]);
}

void method_simple_sort() {
    int a[N], i = 0, k = 0, ind_max = 0, temp = 0;
    read_file();
    for (k = 0; k < N - 1; k++) {
        ind_max = k;
        for (i = 1 + k; i < N; i++) {
            if (a[i] > a[ind_max]) {
                ind_max = i;
            }
        }
        temp = a[k];
        a[k] = a[ind_max];
        a[ind_max] = temp;
    }
    // вывод результатов в файл
    printf("\n\nПростого выбора: ");
    for (int i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    printf("\n\n\n\n");
}

Ответы (1 шт):

Автор решения: Виктория Благодер

Суть ошибки заключалась в том, что массив заполнялся каждый раз новый, а не локальный для каждой функции. Спасибо.

→ Ссылка