Я новичок в 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++
Программы на C++. Форум разработчиков
1730524158
Anonymous
Я новичок в 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[i] == rhs[i])) {
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79150009/during-the-second-call-of-strtok-the-code-raises-the-following-error-invalid[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия