Неверный нулевой указатель

Я пытаюсь написать программу, которая будет анализировать строку и указывать каждую позицию слова. Я не могу понять, почему я получаю

«Отладка не выполнена» Эксперимент: недопустимый нулевой указатель

окно, когда оно достигает последнего слова строки.

char * pointer_char;
int pos = 0;
std::string str = "This test string will fail at this word..!.   ";

int i = 0;
int length = str.length();

char * c = new char [str.size()+1];
std::copy(str.begin(), str.end(), c);
c[str.size()] = '\0';

cout << "Testing string is " << str << endl << endl;
pointer_char = strtok (c," ");
while(pointer_char != NULL)
{
cout << pointer_char << endl;
pointer_char = strtok(NULL, " .!");
string word = pointer_char;

size_t found= str.find(word);
if (found!=string::npos)
cout << "Position of " << word << " found at: " << int(found) << endl;
system("pause");
}
return 0;

0

Решение

Проблема в том, что вы не проверяете возвращаемое значение strtok.

    pointer_char = strtok(NULL, " .!");
string word = pointer_char;

Вы только проверяете это наверху петли.

    pointer_char = strtok(nullptr, " .!");
if (pointer_char == nullptr)
break;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector