Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на функцию,стринг и указатель. Помогите плиз!
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Graver
Задача:

Нужно написать функцию, которая удоляет с заданного стринга С1 все вхождения стринга С2, при помощи указателя.
Помогите плиз!
Lapp
Нет проблем, поможем. Сразу же, как только покажешь, с чем помочь. Выложи, что сделал.
Graver
вот:
Код

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;
}

Посмотрите плиз.... наверно фигню какую-то написал....((
volvo
Ну во-первых, 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;
}

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.