Получение ошибки из-за увеличения индекса и не может понять, почему - PullRequest
0 голосов
/ 03 февраля 2020

Я пишу функцию для создания массива слов из файла. Файл содержит строки, содержащие буквы и другие символы, такие как: {apple run34football 3world.hello}. Я хочу, чтобы массив был {apple, run, football, world, hello}. Это работает почти все, кроме того, что я получаю сообщение об ошибке

"p1 (6771,0x7fffc97613c0) mallo c: * ошибка для объекта 0x7fffc97490b0: освобожденный указатель не выделен * установить точку останова в malloc_error_break для отладки прерывания прерывания: 6 "

из-за строки, которая закомментирована // holder ++;

void distinct(ifstream &fil, int c){
    string word; string words[c]; int holder=0;

    while(fil >> word){
        int j=1;

        while(j==1){

            int flag=0;
            int i=0;
            for(i=0; i<word.length(); i++){
                if(!isalpha(word[i])){ flag=1; break;}
                }
            if(i+1==word.length()){
                    words[holder]=word.substr(0, word.length()-1);
                    //holder++;
                    j=0;
                    }
            else if(flag==0){
                words[holder]=word;
                holder++;
                j=0;
            }
            else{

                if(i==0){
                    word=word.substr(1, word.length()-1);
                }
                else if(i!=0){
                    words[holder]=word.substr(0, i);
                    holder++;
                    word=word.substr(i+1, word.length()-i+1);
                }
            }
        }
    }
    for(int w=0; w<c; w++)
        cout << words[w] << " ";


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...