IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Задача на функцию,стринг и указатель. Помогите плиз!, Помогите пожалуйстра с задачей в Си++
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Ваня

Репутация: -  0  +


Задача:

Нужно написать функцию, которая удоляет с заданного стринга С1 все вхождения стринга С2, при помощи указателя.
Помогите плиз!

Сообщение отредактировано: Graver -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Нет проблем, поможем. Сразу же, как только покажешь, с чем помочь. Выложи, что сделал.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Ваня

Репутация: -  0  +


вот:
Код

int strstr (char *S, char *T)
{
   char *i;
   for (; *S!='\0'; S++)
   {
      i=S;
      for (; *T!='\0' && *T!=*i; i++, T++)
     ;
      if (*T=='\0') return S;
   }
return -1;
}

Посмотрите плиз.... наверно фигню какую-то написал....((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну во-первых, strstr - это изначально не то, что тебе нужно... Эта функция (а ты именно ее берешь за основу) ищет первое вхождение подстроки в строку, но никак не удаляет все вхождения.

Да и потом, у тебе же компилятор должен ругаться, если я не ошибаюсь - результат функции описываешь как int, а вернуть пытаешься char*...

Функция должна выглядеть примерно вот так:
char *strdel(char *str, char *substr) {

char* p_str = str;
if(!(*substr)) {
return str;
}

while(*p_str) {
char* p_str2 = p_str;
char* p_sub = substr;

while(*p_sub && *p_str2 && *p_sub == *p_str2) {
++p_sub; ++p_str2;
}

if(!(*p_sub)) {

/* нашли подстроку - удаляем ее ... */
char *p, *sp = p_str2;
for(p = p_str; *p; *p++ = *sp++);
*p = '\0';

}
++p_str;
}
return str;
}

 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.09.2020 22:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name