Официальный сайт студ.городка НГТУ
Программирование и БД » Функция замены всех вхождений заданной подстроки в строке 

#1  14.06.06 22:40

Функция замены всех вхождений заданной подстроки в строке

Помогите пожалуйста с функцией!!!
Я написал, часть, но у меня заменяет только одно вхождение :(
Вот код:
char *Zam(char *str,char *substr,char *newstr)
{
char *ptr=str;
char str1[N];
char str2[N];
int len=strlen(substr);
while(*ptr)
    {
    if((ptr=strstr(ptr,substr))!=NULL)
     {
     *ptr='\0';
     strcpy(str1,str);
     strcpy(str2,(ptr+len));
      strcat(str1,newstr);
     strcat(str1,str2);
     }
    else
    puts("Net takoy podstroki");
     }
     return str1;
}
подскажите, пожалуйста, что исправить или добавить...

Исправлено Cristiano Ronaldo (14.06.06 22:45)

Offline

#2  15.06.06 00:03

Re: Функция замены всех вхождений заданной подстроки в строке

какая до боли знакомая формулировка...
ну, очевидно, что дальше первого вхождения не идет из-за:  *ptr='\0';
обнулить то обнулил, у тя условие цикла не выполняется... и все на этом.

Offline

#3  15.06.06 01:01

Re: Функция замены всех вхождений заданной подстроки в строке

Andron_, а что дальше делать?

Offline

#4  15.06.06 01:13

Re: Функция замены всех вхождений заданной подстроки в строке

используй strncpy() в качестве длины указывешь длину подстроки
и "\0" присваивать тогда не придеца
да и функция довольно странно выглядит :) уверен что рабоает?)

Исправлено СнегаН (15.06.06 01:25)

Offline

#5  15.06.06 01:33

Re: Функция замены всех вхождений заданной подстроки в строке

проверял, одно слово заменяет...
P.S. а как должна выглядеть?

Offline

#6  15.06.06 02:36

Re: Функция замены всех вхождений заданной подстроки в строке

в отладке прогони да посмотри почему

Исправлено Muxa (15.06.06 02:36)

Offline

#7  15.06.06 14:32

Re: Функция замены всех вхождений заданной подстроки в строке

всем спасибо за помощь!:)
особенно,otaku, как всегда выручил:)

Offline

Программирование и БД » Функция замены всех вхождений заданной подстроки в строке 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.022 сек.
Выполнено 11 запросов.