我为什么收到“Segmentation fault:11”

时间:2018-03-05 18:29:33

标签: c

当我在我的终端中运行它时,它只会告诉我这是一个分段错误。该程序读入一个名为DATA的文件。这是一个包含考试成绩的txt文件。分数如下(如果相关):10 25 50 50 5 0 0 45 45 15 25 50 2 50 30 40。

    #include <stdio.h>
int main()
{
    FILE *fp = fopen("DATA", "r");   //Opens the file DATA in read mode.
    int possibleScoreCounts[51] = {0};
    int score;
    while(!feof(fp))
    {
       fscanf(fp, "%d", &score);
       possibleScoreCounts[score]++;
    }
    printf("Enter a score to check on the exam: ");
    scanf("%d", &score);
    while(score != -1)
    {
       int count = 0;
       for(int i = 0; i < score; i++)
           count = count + possibleScoreCounts[i];
       printf("%d scored lower than %d\n", count, score);
       printf("Enter a score to check on the exam: ");
        scanf("%d", &score);
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码在c99下编译,以便在i

之外的移动for声明进行编译

我在我的系统上测试了这个并且它可以工作(就逻辑而言)

这意味着其中一项特定功能fopenfscanfscanf失败 - 您必须检查错误值