Массив структур, возвращающих случайные значения? - PullRequest
0 голосов
/ 25 сентября 2019

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

printf("%s %i %i %i %i\n", student[0].lastName, student[0].assignmentScore, student[0].quizScore[0], student[0].quizScore[1], student[0].finalExamScore);
printf("%s %i %i %i %i\n", student[1].lastName, student[1].assignmentScore, student[1].quizScore[0], student[1].quizScore[1], student[1].finalExamScore);
printf("%s %i %i %i %i\n", student[2].lastName, student[2].assignmentScore, student[2].quizScore[0], student[2].quizScore[1], student[2].finalExamScore);

, но я получаю это обратно output

Результат, который я ищу, равен output

, но еслиЯ изменяю свое объявление структуры с

struct student student[100];

на

struct student student[3];

Я получаю эти случайные значения обратно Результат, который я ищу: output

Ятакже только с использованием 2 студентов, поэтому 3 должно быть достаточно.Разве я не объявляю структуру массива правильно?

Так я назначаю свои структуры

token = strtok(buffer, search);
    N = atoi(token);
    int dividerCount = 1;
    int quizCounter = 0;
    printf("'%s'\n", token);
    while(token){

        if(count == 0){
            token = strtok(NULL,search);
            M = atoi(token);
            printf("'%s'\n", token);
        }

        if(count >= 1){
            for(j = 0; j < (N * (3 + M)); j++){
                int divider = M + 3;
                if (dividerCount == 1){
                    token = strtok(NULL, search);
                    strcpy(student[count - 1].lastName, token);
                    printf("'%s'\n", token);
                } else if(dividerCount == 2){
                    token = strtok(NULL, search);
                    student[count - 1].assignmentScore = atoi(token);
                    printf("'%s'\n", token);
                } else if(M + 3){
                    token = strtok(NULL, search);
                    student[count - 1].finalExamScore = atoi(token);
                    printf("'%s'\n", token);
                } else {
                    token = strtok(NULL, search);
                    printf("'%i'\n", atoi(token));
                    student[count - 1].quizScore[quizCounter] = token;
                    quizCounter++;
                }

                dividerCount++;
            }
            if(token)
                break;

        }
        count++;
    }
...