struct StringsBase *StringsBase=0L; /*char *ReplaceStr(char *string,char *searchstr,char *replacestr);*/ /*#define RUN*/ #ifdef RUN char *ReplaceStr(s,ss,rs) char *s; char *ss; char *rs; { long sl=0,rl=0,l=0; char *p=s,*sp=ss,*rp=rs,*pp,c; if(!*sp) s=0; if(s) { if(*p) { do sl++; while(*sp++); do rl++; while(*rp++); sl--,rl--; p=(char *)StrStr(s,ss); if(!p) s=0; if(p) { sp=p+sl; if(rl<=sl) { if(rl) { l=1; rp=rs; do *p++=*rp++; while(l++sl) { /* Replacestring groesser als Searchstring */ rp=p; do ; while(*rp++); pp=rp; rp+=(rl-sl);/* Ende vom String (pp)*/ do *rp--=*pp--; while(pp>sp); c=*sp; rp=rs; do ; while(*p++=*rp++); p--; *p=c; } } } } return s; /* */ } /* ReplaceStr $VER: 0.3 */ #endif test(s,searchs,replaces) char *s; char *searchs; char *replaces; { char bs[128],os[128]; long el=0; char *p; StrCpy(bs,s); sprintf(os,"<%s>",s); printf("%11s ",os); sprintf(os,"<%s>",searchs); printf("%9s ",os); sprintf(os,"<%s>",replaces); printf("%7s ",os); p=(char *)ReplaceStr(bs,searchs,replaces); sprintf(os,"<%s>",bs); printf("%17s %4ld %x\n",os,StrLen(bs),p); return el; } int main() /* MAIN */ { long el=0,i,j,l; char *ins[64],*ss[64],*rs[64],*str[64],*p,*s[128]; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); StrCpy(str,"ABCDE12D34"); puts(" input search replace output len adress"); el=test(str,"ABCD","test"); el=test(str,"4","9"); el=test(str,"E12","678"); el=test(str,"12D","a"); el=test(str,"ABC",""); el=test(str,"D",""); el=test(str,"4",",."); el=test(str,"",""); el=test(str,"ABC","FGHI"); el=test(str,"D","QW"); el=test(str,"ABC","QW"); el=test(str,"CDE1","gh"); el=test(str,"12D",""); el=test(str,"test","gh"); el=test(str,"12D34",""); el=test(str,"12D34","gh"); el=test(str,"4",""); el=test(str,"A","gh"); el=test(str,"12D",""); el=test(str,"test","gh"); el=test(str,"12D",""); el=test(str,"A","ghj"); el=test(str,"34","test"); el=test(str,"34",""); el=test(str,"l7+l99","func"); el=test("A","A","a"); el=test("A","","a"); el=test("","",""); if(StringsBase) { CloseLibrary(StringsBase); } return el; } /* input search replace output len adress 10 2BCDD0 <4> <9> 10 2BCDD0 <678> 10 2BCDD0 <12D> 8 2BCDD0 <> 7 2BCDD0 <> 9 2BCDD0 <4> <,.> 11 2BCDD0 <> <> 10 0 11 2BCDD0 11 2BCDD0 9 2BCDD0 8 2BCDD0 <12D> <> 7 2BCDD0 10 0 <12D34> <> 5 2BCDD0 <12D34> 7 2BCDD0 <4> <> 9 2BCDD0 11 2BCDD0 <12D> <> 7 2BCDD0 10 0 <12D> <> 7 2BCDD0 12 2BCDD0 <34> 12 2BCDD0 <34> <> 8 2BCDD0 10 0 1 2BCDD0 <> 1 0 <> <> <> <> 0 0 */