C++处理文本文件中的Segmentation Fault 11

Segmentation Fault 11 in C++ processing text file

我正在尝试在 Mac 中用 C++ 编写程序来处理具有以下数据的文本文件 (table.txt):

Tom 50 60 70.5
Jerry 80.3 65 91
Mark 75.2 77 92.7
Lucy 100 87.6 93

但是,我在终端上从 运行 得到的是这样的,分段错误 11:

Tom 50 60 70.5
Jerry 80.3 65 91
Mark 75.2 77 92.7
Segmentation fault: 11

这是我的程序:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct StudentList {
    string name;
    double scores[2];
};

int main() {

    ifstream marks;
    marks.open("table.txt");

    StudentList Student[50];

    int index = 0;

    string text;
    if (marks.fail()) {
        cout << "fail open" << endl;
    }

    while (marks >> text) {
        cout << text << " ";
        Student[index].name = text;
        marks >> Student[index].scores[0];
        cout << Student[index].scores[0] << " ";

        marks >> Student[index].scores[1];
        cout << Student[index].scores[1] << " ";

        marks >> Student[index].scores[2];
        cout << Student[index].scores[2] << " ";

        cout << endl;
        index++;
        cout << index << endl;
    }

    marks.close();

    return 0;
}

到底是什么问题?

在 C 中,与大多数现代编程语言一样,数组索引从 0 开始,减速中的数字是大小,而不是最后一个索引。所以

double scores[2];

声明一个大小为 2、索引为 0 和 1 的数组。