Я новичок в C++ и не понимаю, почему код не продолжает токенизацию текстового массива, а вместо этого выдает ошибку.
Я подозреваю, что проблема может быть в том, что передачи токена ptr в середине токенизации, из-за чего код просто сдается или что-то в этом роде.
Задача была такая:
Напишите функцию, которая будет удалять все слова в заданном тексте, встречающиеся более одного раза.
Также обратите внимание, что СЛОВО — это последовательность букв, разделенных пробелом.
Примечание. Программа должна использовать указатель.
Ввод:
Первая строка содержит одну строку длиной не более 1000 символов с пробелами.
Каждое слово не длиннее 30 символов.
Вывод:
Форматированный текст.
#include
#include
#include
using namespace std;
bool compareThem(char* lhs, char* rhs) {
if (strcmp(lhs, rhs) != 0) {
return false;
}
int len = strlen(lhs);
for (int i = 0; i < len; i++) {
if (!(lhs == rhs)) {
return false;
}
}
return true;
}
bool isDuplicate(char* possibleDuplicate, char* result) {
char* soFar = new char[strlen(result) + 1];
strcpy(soFar, result);
char* word = strtok(soFar, " ");
while (word != NULL) {
if (compareThem(possibleDuplicate, word)) {
delete[] soFar;
return true;
}
word = strtok(NULL, " ");
}
delete[] soFar;
return false;
}
void removeDuplicates(char* text) {
char* result = new char[1000];
result[0] = '\0';
char* word = strtok(text, " ");
while (word != NULL) {
if (!isDuplicate(word, result)) {
strcat(result, word);
strcat(result, " ");
}
word = strtok(NULL, " ");
}
cout
Подробнее здесь: https://stackoverflow.com/questions/791 ... or-invalid
Во время второго вызова strtok() код выдает следующую ошибку: Недопустимое чтение размера 1. ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение