Ошибка сегментации 11 в текстовом файле обработки C ++

Я пытаюсь написать программу на C ++ в Mac для обработки текстового файла (table.txt), который содержит следующие данные:

Том 50 60 70,5
Джерри 80,3 65 91
Марк 75,2 77 92,7
Люси 100 87,6 93

Однако, что я получаю от запуска его на терминале, это с ошибкой сегментации 11:

Том 50 60 70,5
Джерри 80,3 65 91
Марк 75,2 77 92,7
Ошибка сегментации: 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;
}

в чем именно проблема?:

1

Решение

В C, как и в большинстве современных языков программирования, индексирование массива начинается с 0, а число при замедлении — это размер, а не последний индекс. Так

double scores[2];

объявляет массив размера 2 с индексами 0 и 1.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]