如果大家能看一下这段代码,让我知道浮点异常的可能原因,我将不胜感激。
信息:
分支是一个整数数组,大小为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;
}
}
最佳答案
sizeof(branches)
是以字节为单位的大小-您需要使用表示元素数量的常量,即200,否则您将超出branches
数组的界限,这将导致未定义的行为。
您的代码应该如下所示:
#define NUM_BRANCHES 200
int branches[NUM_BRANCHES];
for (count = 0; count < NUM_BRANCHES; count++)
{
...