Trying to make a program that prints data entered into a file.
Everything is working all and good apart from the Calculating Average for marks entered.
I can't seem to figure out how to do it, even though it should be simple I just cant get my head around it.
The error I am currently getting is:
"temp->mark = temp->mark + studentArray[j];" (Invlalid operands to 
 binary + (have 'float' and 'char *').
Much appreciated if someone could help me. I have tried the following
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct student{
    char name[30];
    int id;
    float mark;
};
int count = 0;
void student_update(char *stuadd);
void display(char *stuadd);
void main(int argc, char *studentArray[100])
{
    int choice;
    while(1)
    {
        printf("Welcome to Student Archives\n\n");
        printf("1. Display Students' Details\n");
        printf("2. Calculate average of all students’ marks \n");
        printf("3. Add new student to the record \n");
        printf("4. Quit Program\n");
        scanf("%d",&choice);
        switch(choice)
        {
        case 1:display(studentArray[100]);
            break;
        case 2:
            break;
        case 3:
            student_update(studentArray[100]);
            break;
        case 4: printf("Program Terminated.\n"); 
            exit(0);
        default: printf("Wrong Choice. Enter again\n");
            break;
        }
    }
}
void display(char *stuadd)
{
    FILE *fptr;
    char ch;
    int rec = count;
    fptr = fopen("stuadd.txt", "r");
    struct student *temp = (struct student *)malloc(sizeof(struct student));
    if (fptr == NULL)
        printf("File does not exist.");
    else
    {
        while (rec)
        {            
            fread(temp->name, 50, 1, fptr);
            printf(" %s\n", temp->name);
            fread(&temp->id, sizeof(int), 1, fptr);
            printf("%d", temp->id);
            fread(&temp->mark, sizeof(int), 1, fptr);
            printf("%.2f", temp->mark);
            rec--;
        }
    }
    fclose(fptr);
    free(temp);
    free(temp->name);
}
void calculateAverage(char *studentArray[100])
{
    struct student *temp = (struct student *)malloc(sizeof(struct student));
    int j;
    float avg;
    temp->mark  = avg = 0;
    for(j = 0; j < 100; j++)
    {
        temp->mark = temp->mark + studentArray[j];
    }
    avg = (float)temp->mark / j;
    printf("Average of students' total marks are: %.2f",avg);
}
void student_update(char *stuadd)
{
    FILE *fptr;
    fptr = fopen("stuadd.txt", "a+");
    struct student *temp = (struct student *)malloc(sizeof(struct student));
    if (fptr == NULL)
        printf("\nError.");
    else
    {
        printf("\nEnter the students' name\n");
        scanf(" %[^\n]s", temp->name);
        printf("Enter the students' ID\n");
        scanf("%d", &temp->id);
        printf("Enter the students' mark\n");
        scanf("%f", &temp->mark);
        fprintf(fptr, "%s %d %.2f", temp->name, temp->id, temp->mark);
        count++;
    }
    fclose(fptr);
    free(temp);
    free(temp->name);
}
 
     
    