Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Dxsile
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 9
#1

Функция для удаления слова из строки - C++

02.10.2012, 00:09. Просмотров 2287. Ответов 4
Метки нет (Все метки)

Доброго времени суток, господа!
Столкнулся с проблемой написания функции для удаления слова из строки.
До этого приходилось удалять лишь лишние пробелы, делал это следующим образом
C++
1
2
3
4
5
for(i=0;i<strlen(str);i++)
        if((str[i]==' ')&&(str[i+1]==' ')){
            delchar(str,i+1);
            i-- ;
        }
, где delchar

C++
1
2
3
4
5
6
char* delchar(char* str, size_t n){
            int len = strlen(str)-n;
            if(len>0)
            memmove(str+n, str+n+1, len);
            return str;
}
Но как прикрутить это к данной задаче - ума не дам. Знатоки, подскажите, пожалуйста!
(VS2010, если что)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 00:09     Функция для удаления слова из строки
Посмотрите здесь:

Функция для удаления строки из двумерного массива - C++
Массив должен передаваться в функцию как параметр. Написать функцию для удаления строки из двумерного массива. Оставшиеся строки должны...

Функция удаления подстроки из строки - C++
Начал читать книжку, в ней задание накидать такую функцию. Вроде написал, но безумно коряво с костылями, поэтому она почемуто иногда...

Функция удаления строки с номером к из списка - C++
Хелп , заранее спасибо

Функция удаления из строки n-символов, начиная с q-го - C++
напишите функцию удаления из строки n-символов, начина с q-го

Функция удаления из строки всех точек - C++
Нужно разработать рекурсивную функцию для удаления всех точек из строки. Вот, что у меня получилось. Выбивает ошибку String subscript out...

Написать программу удаления из строки слова с заданным номером. - C++
8.10.1. Помогите, пожалуйста, решить задачу. Написать программу удаления из строки слова с заданным номером.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
koorya
332 / 178 / 18
Регистрация: 18.03.2010
Сообщений: 579
Записей в блоге: 11
02.10.2012, 00:48     Функция для удаления слова из строки #2
Как-нибудь так.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//str - строка
//strlen - длина строки
//mywrd - слово, которое нужно найти и удалить
//mywrdlen - длина того слова
//delfromto(строка, первый_удаляемый_символ, последний_удаляемый_символ) - функцыя удаляющая из строки символы
int j=0;
for(int i=0; i<strlen; i++){
  j=0;
  for(j=0; (j<mywrdlen)&&(str[i+j]==mywrd[j]); j++);
  if(j==mywrdlen){
    delfromto(str, i, i+j);
    strlen-=j;
    i-=j;
  }
}
Тут только идея. Навряд ли оно сразу заработает.
Dxsile
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 9
02.10.2012, 02:33  [ТС]     Функция для удаления слова из строки #3
спасибо, буду пробовать!

Добавлено через 1 час 39 минут
не, не взлетело
пробовал вот так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* del_word(char *dict, char *str){
 
    
    int j=0;
    for(int i=0; i<strlen(dict); i++){
        j=0;
        for(j=0; (j<strlen(str))&&(str[i+j]==str[j]); j++);
        if(j==strlen(str)){
        dict=delchar(dict, i, i+j);
        //strlen(dict)-=j;
        i-=j;
        }
    }
    return dict;
}
, где delchar
C++
1
2
3
4
5
6
char* delchar(char *str, int i, int n){
            int len = strlen(str)-n;//передать сюда длину строки, длину слова
            if(len>0)
            memmove(str+i, str+n, len);
            return str;
}
Удалять то в принципе удаляет, но не то, что надо, и криво - удалилось первое слово с пробелом(6 символов), а в конец добавились последние шесть символов файла, т.е. в конце файла получилось "qweasd weasd "(с пробелом в самом конце).
koorya
332 / 178 / 18
Регистрация: 18.03.2010
Сообщений: 579
Записей в блоге: 11
02.10.2012, 02:39     Функция для удаления слова из строки #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
char* del_word(char *dict, char *str){
int j=0;
* * for(int i=0; i<strlen(dict); i++){
* * * * j=0;
* * * * for(j=0; (j<strlen(str))&&(str[i+j]==str[j]); j++);//тут у Вас путаница, к примеру.
* * * * if(j==strlen(str)){
* * * * dict=delchar(dict, i, i+j);
* * * * //strlen(dict)-=j;
* * * * i-=j;
* * * * }
* * }
* * return dict;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2012, 02:57     Функция для удаления слова из строки
Еще ссылки по теме:

функция в си++ для удаления элемента - C++
Есть ли функция в си++ для удаления элемента,например из текста?) Запрещено создавать темы с бессмысленными названиями вроде...

Функция для удаления из массива простых чисел - C++
Написать функцию которая удаляет все простые числа из массива X.И вывести массив без простых чисел.

Не могли бы объяснить, как работает эта функция для удаления цифр? - C++
char* delDig(char *S) { int i,j; i=0; for (j=0; j&lt;strlen(S); j++) if ((S &lt; '0') || (S &gt; '9')) S=S; S=0;...

Функция для удаления элемента в двумерном динамическом массиве. В чем ошибка? - C++
функция для удаления элемента в двум дин массиве (пока только часть в которой указывается какой надо удалить элемент). пишет IntelliSense:...

Функция по разбитию строки на слова - C++
Пользователь вводит строку, состоящую из N-го количества слов. Надо написать функцию, которая разбивает строку на слова.

Функция разбиения строки на отдельные слова - C++
Подскажите, плиз, как написать функцию разбиения строки на отдельные слова. Параметр функции — исходная строка, результат работы —...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Dxsile
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 9
02.10.2012, 02:57  [ТС]     Функция для удаления слова из строки #5
аеее, спасибо вам огромное! взлетело
именно в той строчке и была ошибка - должно было быть не str[i+j], а dict[i+j]. Видимо , сбило с толку название слова str у меня Ещё раз огромное вам спасибо !
Yandex
Объявления
02.10.2012, 02:57     Функция для удаления слова из строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru