Массив структур, заменяющих значения над собой

Итак, у меня есть приведенный ниже код, и я просто извлекаю различные вещи из файла и вводю их в массив структур, это "по-видимому" работает изначально, НО, когда я начинаю печатать его после того, как он закончил с файлом, который, как казалось, заменил все курсы и названия самой последней долей, странно, что это не происходит с целыми числами (классами), оценки действительно вводятся должным образом.

#include 
#include 
#include 

struct student {
    char *name;
    char *course;
    int grade;

};

void courseSort(struct student d[20], int size);

int main(void)
{
    FILE* fp;
    char* filename = "grades.csv";
    char buffer[100];
    char* name, *class;
    char* del=",";
    int grade, i, counter=0;

    struct student d[20];

    if((fp=fopen(filename, "r"))==NULL)
    {
        printf("unable to open %s\n", filename);
        exit(1);
    }

    while(fgets(buffer, sizeof(buffer), fp) !=NULL)
    {
        name = strtok(buffer,del);
        class=strtok(NULL,del);
        grade = atoi(strtok(NULL,del));

        d[counter].name=name;
        d[counter].course=class;
        d[counter].grade=grade;
        printf("%s    %s       %d\n",d[counter].name,d[counter].course,d[counter].grade);
        counter++;
    }

    printf("\n\n\n");

    for(i=0;i

Ответы на вопрос(3)

Ваш ответ на вопрос