Я пытаюсь написать программу в C++ в Mac обрабатывать текстовый файл (table.txt), который имеет следующие данные:Сегментация Fault 11 в C++ текстовой обработки файла
Том 50 60 70,5
Джерри 80,3 65 91
Mark 75,2 77 92,7
Lucy 100 87,6 93
Однако то, что я получаю от работы его на терминале это, с ошибкой сегментации 11:
Том 50 60 70,5
Jerry 80,3 65 91
Mark 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;
}
Что именно проблема ?
Вы только выделили место для 2-х баллов: 'двойной оценки [2],' но стараюсь читать 3: 'марок> > Student [index] .scores [2]; 'Доступ к массиву вне границ - это неопределенное поведение. –