I am trying to compute the average after reading in the data from a text file of int type.The program compiles fine. clang -std=gnu11 -Weverything -g3 -pedantic -g3 -O3 -lm    average_weight_of_elephant_seals.c   -o average_weight_of_elephant_seals
Suppose I want to compute the average weight of 2000 seals,the expected output is 6838.848152 but I get 1710.566467.I have no idea how to make sense of GDB yet.
Could someone please point out where have I have gone wrong?
/* The following program demonstrates the usage of fscan to read in a set of integer data into a file and then computes the sum followed by the average.
 * The computation shall be encapsulated in a function and then be called in the main routine
 */
#include <stdio.h>
#define MAXSIZE 5000 /* Macro definition to pre-define the size of the array */
double average_weight(int count, int weights_array[]);
int main(void)
{
    int number_of_seals;
    int weights_array[MAXSIZE];
    printf("Enter the number of seals: \n");
    scanf("%i", &number_of_seals);
    printf("Their average weight is %lf\n", average_weight(number_of_seals, &weights_array[number_of_seals]));
    return 0;
}
double average_weight(int count, int weights_array[])
{
    /* Variable declaration and initialization
     * Note the use of the FILE data type */
    int weight;
    int sum = 0;
    FILE *elephant_seal_data = fopen("elephant_seal_data.txt", "r");
    if (elephant_seal_data == NULL)
    {
        return -1;
    }
    /* FEOF function to determine if EOF has been reached or not */
    while (!feof(elephant_seal_data))
    {
        fscanf(elephant_seal_data, "%i", &weight);
        weights_array[count++] = weight;
        sum += weight;
        count++;
    }
    double average_weight = (double)sum / (double)count;
    fclose(elephant_seal_data);
    return average_weight;
}
 
     
     
     
    