Я пишу функцию для создания массива слов из файла. Файл содержит строки, содержащие буквы и другие символы, такие как: {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] << " ";
}