Какая часть этого вызывает исключение с плавающей запятой?
Я был бы очень признателен, если бы люди могли просмотреть этот фрагмент кода и сообщить мне, что может стать причиной исключения с плавающей запятой.
Информация:
- ветки - это размер массива int 200
- строка представляет собой массив символов размера 20
- Цикл работает нормально 6 раз, затем возникает исключение.
Я сбит с толку, потому что нет деления, числа с плавающей запятой или целого числа, которые могли бы вызвать это.
for (count = 0; count < sizeof(branches); count++){
if (fgets(line,sizeof(line),fp)==NULL)
break;
else {
int branch_taken = line[16] - 48;
branches[count] = branch_taken;
}
}
1 ответ
Решение
sizeof(branches)
это размер в байтах - вам нужно использовать константу, которая представляет количество элементов, т.е. 200, иначе вы будете выходить за пределы вашего branches
массив, который приведет к неопределенному поведению.
Ваш код, вероятно, должен выглядеть примерно так:
#define NUM_BRANCHES 200
int branches[NUM_BRANCHES];
for (count = 0; count < NUM_BRANCHES; count++)
{
...