Printf не отображается и возвращает значение 3221225477 - PullRequest
0 голосов
/ 29 января 2019

Новичок в C и программировании в целом, поэтому мне тяжело работать со структурами в сочетании с массивами и указателями.Я пытаюсь создать структуру с попытками, а затем создать указатель массива (в направлении структуры), повторяя его 10 раз.Затем найдите среднее значение для каждой структуры и распечатайте его.

Кажется, что все работает нормально, возвращая значение 0 до цикла.

#include <stdio.h>
#include <stdlib.h>

typedef struct Tries {
float attempts1;
float attempts2;
float attempts3;
float aver;
}Try;

int main(int argc, char *argv[]) {
int i,size=10,at1,at2,at3;
Try** arrayofTries= malloc (sizeof(Try)*size);
for (i=0;i<size;i++){

        arrayofTries[i]->attempts1= rand () %(900 - 700)+700;
        arrayofTries[i]->attempts2= rand () %(900 - 700)+700;
        arrayofTries[i]->attempts3= rand () %(900 - 700)+700;
        at1= arrayofTries[i]->attempts1;
        at2= arrayofTries[i]->attempts2;
        at3=arrayofTries[i]->attempts3;
        arrayofTries[i]->aver = (at1+at2+at3)/3;
     printf ("The average of %d person is%f",i,arrayofTries[i]->aver);
}

return 0;
}

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы выделяете указатель на указатель на Try, но не выделяете прямой указатель на сами элементы.Похоже, что вы намереваетесь объявить одномерный массив, а не двумерный массив, поэтому вам нужно изменить тип arrayofTries с Try ** на Try *.

Кроме того, когда вы 'сделано с использованием памяти, выделенной с malloc, free it:

free(arrayofTries);
arrayofTries = NULL;
0 голосов
/ 29 января 2019

arrayofTries должно быть типа Try *, а не Try **

Try *arrayofTries = malloc (sizeof(Try) * size);

Так что все ваши -> должны быть простыми точками ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...