Я пытаюсь сделать массив структур с помощью таНоса выделить память, необходимую как так:Использования таНоса выделить память для массива
typedef struct stud{
char stud_id[MAX_STR_LEN];
char stud_name[MAX_STR_LEN];
Grade* grd_list;
Income* inc_list;
}Stud;
Stud* students = malloc(sizeof(Stud)*STUDENT_SIZE);
Проблема заключается в том, что у меня есть функция, которая добавляет id
и name
на место в массиве, как так:
void new_student(Stud* students[], int stud_loc){
scanf("%s", students[stud_loc]->stud_id);
printf("%s", students[stud_loc]->stud_id);
scanf("%s", students[stud_loc]->stud_name);
printf("%s", students[stud_loc]->stud_name);
}
Но после первого вызова функции, которая работает, второй дает мне ошибку:
Segmentation fault (core dumped)
И я могу только думать, что это должно означать, что я не делаю этого правильно, и вся память, вероятно, собирается в одно место, а не в форме массива. Я бы предпочел сделать
Stud students[STUDENT_SIZE];
но в этом случае я должен использовать malloc.
Я попытался использовать calloc, но все равно получаю ту же ошибку.
ли вы (не) проверить возвращаемое значение 'таНос()'? –
Создайте [mcve], который демонстрирует проблему. Я хотел бы видеть, как вы передали значение «Stud *» функции, которая принимает «Stud * []». –
'new_student (Stud * students [], ...' равно 'new_student (Stud ** students, ...'. Но вы хотите 'new_student (Stud * students, ...'. Компилятор должен был предупредить вы об этом. – alk