Я пишу код, который вычисляет окончательный класс учащегося с учетом оценок и весов для каждого компонента. Я сталкиваюсь с ошибкой сегментации, когда предполагается, что следующий цикл цикла будет завершен.Ошибка сегментации в последней итерации цикла for
for (i = 0; i < course.numOfSchemes; i++){
printf("Marking scheme# %u \n", i);
for (j = 0; j < course.numOfComponents; j++){
printf(" Enter %s weight: ",course.components[j]);
scanf("%f", &course.weights[i][j]);
}
printf("End: %u \n \n",i);
}
printf("rrr");
Итак, предполагающих course.numOfSchemes = 2 и course.numOfComponents = 3, это то, что пробный запуск будет выглядеть. Вы заметите, что цикл проходит от начала до конца дважды, но текст «rrr» никогда не печатается. Поэтому я предполагаю, что ошибка происходит во время проверки, которая происходит, когда цикл пытается выйти.
Marking scheme# 0
Enter A weight: 20
Enter B weight: 30
Enter C weight: 50
End: 0
Marking scheme# 1
Enter A weight: 40
Enter B weight: 40
Enter C weight: 20
End: 1
Segmentation fault (core dumped)
попробовать 'Е (" ррр \ n ");' – BLUEPIXY
И если вы сделаете это как @BLUEPIXY, вы, вероятно, обнаружите, что ваш segfault на самом деле происходит позже. 'stdout' обычно буферизуется в строке, и буфер обычно не сбрасывается, когда программа прерывается. –
Является ли 'course.weights' массивом типа' float'? –