Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Задача на функцию,стринг и указатель. Помогите плиз!

Автор: Graver 13.12.2007 4:20

Задача:

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

Автор: Lapp 13.12.2007 11:30

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

Автор: Graver 13.12.2007 18:15

вот:

Код

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 13.12.2007 18:58

Ну во-первых, 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;
}