struct StringsBase *StringsBase=0L; /*#define RUN*/ #ifdef RUN char *StrCpyAfterStrStr(ds,s,ss) char *ds,*s,*ss; { char *p,*dp=ds,*endp,*bp; if(dp) { dp=ds; *dp=0; p=s; endp=(char *)StrStr(s,ss); if(!endp) dp=0; if(dp) { if(!*ss) endp=0; if(endp==p) dp--; if(endp) { do *dp++=*p++; while(p%3ld%7x <%6s>%3ld",s,StrLen(s),s,ss,StrLen(ss)); printf("%7x <%6s> %3ld <%s> %7x\n",ss,os,StrLen(os),p,p); return el; /* */ } int main() { /* MAIN */ long el=0; char s[1024],as[1024]; el--; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); puts("InputString Len Adr Search Len Adr Output Len Adr"); StrCpy(as,"StrCpyAfterStrStr"); el=test(s,as,"Cpy"); el=test(s,as,"S"); el=test(s,as,"After"); el=test(s,as,"StrCpy"); el=test(s,as,"not"); el=test(s,as,""); el=test(s,as,"C"); el=test(s,"","a"); el=test(s,"",""); el=test(s,0,""); el=test(0,as,""); if(StringsBase) CloseLibrary(StringsBase); return el; } /* END */ /* InputString Len Adr Search Len Adr Output Len str Adr 17 2405C0 < Cpy> 3 21EC05 6 <> 2409C6 17 2405C0 < S> 1 21EC03 < S> 1 <> 2409C1 17 2405C0 < After> 5 21EBFD 11 <> 2409CB 17 2405C0 6 21EBF6 6 <> 2409C6 17 2405C0 < not> 3 21EBF2 < > 0 <> 0 17 2405C0 < > 0 21EBF1 < > 0 <> 2409C0 17 2405C0 < C> 1 21EBEF < StrC> 4 <> 2409C4 < > 0 21EBEE < a> 1 21EBEC < > 0 <> 0 < > 0 21EBEB < > 0 21EBEA < > 0 <> 2409C0 < > 0 0 < > 0 21EBE9 < > 0 <> 0 17 2405C0 < > 0 21EBE8 < > 0 <> 0 Dest=NULL !!! */