03.07.2007, 10:38
общий
это ответ
Здравствуйте, Alexius!
вот...
char* str_replace(char *ssource,char *sfrom,char *stotext)
{
// обработка входной информации
if(ssource==NULL || sfrom==NULL || stotext==NULL)return NULL;
////////////////////////////////////////////////
char *s,*ptr=ssource,*out;
int lenfrom=strlen(sfrom),lento=strlen(stotext),numzamen=0,i=0,len=0;
while(s = strstr(ptr,sfrom))numzamen++,ptr=s+lenfrom;
if(numzamen==0)return ssource;
ptr=ssource;
len = strlen(ssource)- numzamen*(lenfrom-lento)+1;
out = new char[len+1];
memset(out,0x00,(len+1)*sizeof(char));
while(s=strstr(ptr,sfrom)){
i = s-ptr;
if(i){strncat(out,ptr,i);ptr += i;}// запоминаем символы между заменами
else{strncat(out,stotext,lento);ptr += lenfrom;}// вставляем замену
}
// добавляем конец строки
strcat(out,ptr);
return out;
}