0

C++ 代码

基本上我正在尝试从文件中获取输入并将数据存储在变量中,但我无法做到这一点,因为每次我编译此代码时它都会成功编译但会出现运行时错误。(现在我只有 3 个学生的数据,所以我将条件设置为运行循环 3 次)。

变量“Name”将从文件中获取名称,“sap”将获取卷号,“number”将获取用户想要输入分数的科目数(最多 5 个),“marks”将输入分数那些科目。

变量“SapFile”、“NumberFile”和“MarksFile”将从文件中获取字符串数据,并将它们存储在它们各自的格式变量中,如上所述。

它的确切作用是从文件中读取数据到变量并打印它们,但是当它到达“i = 3”时,这个条件不是变为假并终止循环并退出函数,而是给出运行时错误。[注意:它正确打印了文件中3个学生的数据,然后给出了运行时错误]。

错误快照附加如下,

运行时错误图像

'''

这是我的代码

void read_in_variables(void)
{

string SapFile = "";

string NumberFile = "";
string MarksFile = "";
int studentCount = 0;

struct Student
{
    string Name = "";
    int sap = 0;
    int number = 0;
    int marks[5] = { 0 };
};
Student S[50];

ifstream outFile;
outFile.open("Students.csv", ios::in);
if (outFile.is_open())
{
    for (int i = 0; i<3; i++)
    {
        if (i == 0)
            cin.ignore();
        getline(outFile, S[i].Name, ',');
        studentCount++;
        getline(outFile, SapFile, ',');
        S[i].sap = stoi(SapFile);

        getline(outFile, NumberFile, ',');
        S[i].number = stoi(NumberFile);

        cout << i + 1 << ".  " << S[i].Name << ", " << S[i].sap << ", " << S[i].number;
        for (int j = 0; j < (S[i].number - 1); j++)
        {
            getline(outFile, MarksFile, ',');
            S[i].marks[j] = stoi(MarksFile);
            cout << ", " << S[i].marks[j];
        }
        getline(outFile, MarksFile, '\n');
        S[i].marks[S[i].number] = stoi(MarksFile);
        cout << ", " << S[i].marks[S[i].number];
        cout << endl;
    }
        outFile.close();
    if (studentCount == 0)
        cout << "\n\nNo Student Records Present.\n\a\n";
}
else
{
    cout << "File not Opened !!! ";
}
}

此外,当我一开始尝试在条件语句中放入“outFile.eof()”时,它在开始时返回 false,甚至不进入循环,并打印“没有学生记录存在”。因为“StudentCount”的值为 0。

[我已包含此功能所需的所有头文件]。

请帮我解决这个问题并让这个功能完美运行。

4

0 回答 0