C ++文本文件编辑器在文件编辑时崩溃

时间:2014-11-07 16:12:01

标签: c++ file runtime-error ofstream

让我先说一下我对C ++很陌生,来自Java,想要学习新语言。

我使用ofstream通过循环遍历数组将数组写入文本文件,如下所示。

当我在Notepad ++或Microsoft的记事本中打开文件时,我会看到文件中的所有条目,但是有一个运行时错误导致编辑器崩溃。

我的主要功能

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

using namespace std;

int main() {

    //Prototyped functions
    int getMenuOption();
    int printMenu();
    void beginNewVocabularySet();

    void printIntro();

    int option = getMenuOption();

    switch(option){

    case 2: beginNewVocabularySet();

    }

    return 0;
}

调用下面函数的函数

void beginNewVocabularySet(){

    int vocabSize = 0;

    cout << "Please enter the length of the vocabulary set\n";

    cin >> vocabSize;

    string vocabArray[vocabSize];

    cout << "Please enter a word, then press enter to make the second entry.\n";

    for(int i=0; i < vocabSize; i++){

         cin >> vocabArray[i];
         cout << "Entry number " << i+1 << ". " << vocabArray[i] << "\n";

    }

    saveVocabSet(vocabArray, vocabSize);


}

将数组写入文件的函数

int saveVocabSet(string vocabArr[], int arrSize){

    ofstream vocabFile ("vocabList.txt");

    if (vocabFile.is_open()){

        for(int i=0; i<=arrSize; i++){

            vocabFile<< vocabArr[i] << "\n";

        }

        vocabFile.close();

    }else {

        cout << "Unable to open file";
        return 1;
    }

    return 0;

}

1 个答案:

答案 0 :(得分:2)

saveVocabSet中你正在访问数组越界

for(int i=0; i <= arrSize; i++)
//             ~~ should be i < arrSize or i <= arrSize-1

数组索引应该从0到arrSize - 1