C 为什么我会收到;分段错误:11“;

C 为什么我会收到;分段错误:11“;,c,C,当我在终端中运行这个程序时,它会简单地告诉我这是一个分段错误。这个程序读入一个名为DATA的文件。这是一个包含考试分数的txt文件。分数如下(如果相关的话):10 25 50 50 50 0 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 possible

当我在终端中运行这个程序时,它会简单地告诉我这是一个分段错误。这个程序读入一个名为DATA的文件。这是一个包含考试分数的txt文件。分数如下(如果相关的话):10 25 50 50 50 0 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);
    }
}
#包括
int main()
{
FILE*fp=fopen(“DATA”,“r”);//以读取模式打开文件数据。
int-possibleScoreCounts[51]={0};
智力得分;
而(!feof(fp))
{
fscanf(fp、%d、&score);
可能的帐户计数[分数]+;
}
printf(“输入分数以检查考试:”);
scanf(“%d”和分数);
while(分数!=-1)
{
整数计数=0;
for(int i=0;i
您的代码在
c99
下编译,在
for

我在我的系统上进行了测试,它可以正常工作(就逻辑而言)


这意味着某个特定功能
fopen
fscanf
scanf
失败-您必须检查错误值

Don;t如果您输入的分数低于
51
,是否使用?提及您作为输入提供的内容。检查
fopen
的返回值。使用所有警告和调试信息编译:
gcc-Wall-Wextra-g
。检查每个功能是否出现故障,尤其是
fopen
。阅读您所使用的每一个文档。另请参阅@JGroven Well的可能副本,如果我们将每个segfault标记为这一个的副本。。。我们可以这样关闭(至少是C部分)