Вы никогда не выделяете память для struct student *array[MAX];
Я думаю, это перезаписывает ваши данные, может быть?
strcpy(array[0]->studentID, dummy);
studentID - это символ [5], а dummy - символ [30]. Прошло много времени с тех пор, как я использовал C для m, но вы могли уничтожить другие данные.