程序在文件输出c ++上崩溃

时间:2014-11-09 20:11:21

标签: c++ stream char ifstream

当我尝试将结果输出到.txt文件时,我的程序意外崩溃。

基本上,我想将学生列表存储在.txt文件中并检索它们以方便以后使用。我的程序可以将值存储为变量,但是当你想将它们保存到输出文件时,程序本身就会崩溃。

这是我的代码

//STUDENTS CLASS

char** studentNames;
int numberOfNames;

void Students::setNumberOfNames(int namenumbers) // Takes in the number of student names to store
{
    numberOfNames = namenumbers;
}


void Students::setStudentNames() // Takes a number of student names and stores them.
{
    char studentinput[128]
    studentNames = new char*[numberOfNames];
    for (int i=0; i<=numberOfNames; i++)
    {
        studentNames[i] = new char[128];
        cout << "Student " << i << ": " << "\n";
        cin.getline(studentinput, sizeof(studentinput));
        strcpy(studentNames[i], studentinput);
    }
}


//MAIN CLASS
Student s;
int nums;
int main()
{
    cout << "How many names would you like to store? " << endl;
    cin >> nums;
    s.setNumberOfNames(nums):
    s.setStudentNames();
    for(int i=0; i<=s.numberOfNames; i++)
    {
        cout << s.numberOfNames [i] << "\n"; // THIS WORKS FINE! DOES WHAT I SAY :)
    }

    // THIS IS WHERE IT CRASHES. I TRY AND STORE THE NAMES INTO THE `.txt` FILE.
    //IF YOU WANT TO STORE 3 NAMES, IT WORKS FINE, BUT IF YOU WANT TO STORE LIKE
    //12 NAMES THE WHOLE THING CRASHES. WHEN I COMMENT OUT THE BOTTOM BLOCK
    //OF CODE THE PROGRAM WORKS FINE, BUT I WANT TO STORE THE NAMES.

    ofstream outputFiles ("example.txt");
    if(outputFiles.is_open())
    {
        for(int i=0; i<=s.numberOfNames; i++)
        {
            outputFiles << s.studentNames [i] << "\n";
        }
    }
}

1 个答案:

答案 0 :(得分:1)

更改

for (int i=0; i<=numberOfNames; i++)

for (int i=0; i < numberOfNames; i++)

您计划中的任何地方。