0

如果人们可以查看这段代码并让我知道可能导致浮点异常的原因,我将不胜感激。

信息:

  • 分支是一个大小为 200 的 int 数组
  • line 是一个 char 数组,大小为 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;
     }   
    }
4

1 回答 1

7

sizeof(branches)是以字节为单位的大小- 您需要使用一个表示元素数量的常量,即 200,否则您将超出branches数组的边界,这将导致未定义的行为。

您的代码应该看起来像这样:

#define NUM_BRANCHES 200

int branches[NUM_BRANCHES];

for (count = 0; count < NUM_BRANCHES; count++)
{
    ...
于 2012-10-22T18:37:29.093 回答