带有for循环的数组会产生分段错误

时间:2015-11-04 23:21:49

标签: c arrays

我正在创建一个程序,它将三个不同的标记存储为数组。当我运行程序时,我收到以下错误:

Enter marks: 95
Enter marks: 64
Segmentation fault

这是我写的程序:

#include <stdio.h>
int main(void) {

        int num[3];
        int i;
        float total;

        for (i=0;i<4;i++) {

                printf("Enter marks: ");
                scanf("%d", num[i]);
        }

        total = num[0] + num[1] + num[2] / 300 * 100;

        printf("Average: %.2f", total);
}

1 个答案:

答案 0 :(得分:0)

您的代码存在两个问题:

第一个(正如其他人所说)是你需要scanf进入一个位置:

scanf("%d", &num[1]);

不这样做会导致分段错误。

您还需要获得匹配的数组大小和循环限制。

您已将数组定义为:

int num[3];

,其索引为0,1,2。

然而你的循环

for (i=0; i<4; i++)

从0..3迭代。

修复第一个问题后,您将引用无效的num[3],并会导致其他错误。