struct StringsBase *StringsBase=0L; /*char *RepStrBetweenStrsCpy(char *ds,char *s,char *as,char *bs,char *rs); */ /*#define RUN*/ #ifdef RUN char *RepStrBetweenStrsCpy(ds,s,as,bs,rs) register char *ds; register char *s; register char *as; register char *bs; register char *rs; { register char *p,*ap,*bp,*rp; ap=ds; if(ap) *ds=0; if(!as) ap=0; if(!bs) ap=0; if(!rs) ap=0; if(!ap) ds=0; if(ap) { if(!*as) if(!*bs) {StrCpy(ds,rs); ap=0; } } if(ap) { *ds=0; p=ap=s; bp=p; do { if(p) ap=(char *)AfterStrStr(p,as); if(ap) { StrnCat(ds,p,ap-p); bp=(char *)AfterStrStr(ap,bs); if(!bp) p=ap; if(bp) { if(*p)StrCat(ds,rs); StrCat(ds,bs); p=ap=bp; } } if(!ap) bp=0; } while(bp); if(p) { StrCat(ds,p); } } return ds; /* $VER: RepStrBetweenStrsCpy 0.8 */ }; #endif long test(s,as,bs,rs,outs) char *s; char *as; char *bs; char *rs; char *outs; { long el=0,lenl; char os[256],*p; strcpy(os,s); if(as) printf("\nIN as <%7s> %ld ",as,(long)strlen(as)); if(!as) printf("as = NULL "); if(!bs) printf("bs = NULL "); if(bs) printf(" bs <%7s> %ld rs = <%s>",bs,(long)strlen(bs),rs); puts(); p=(char *)RepStrBetweenStrsCpy(os,s,as,bs,rs); printf("ret <%s> %x l = %ld\n",p,p,(long)strlen(p)); /* if(!p) printf("NOT FOUND "); lenl=(long)strlen(os);*/ if(!p) printf("NOT FOUND "); lenl=(long)strlen(p); printf("OUT <%s> %x len %ld\n",os,os,lenl); sprintf(os,"%ld",lenl); strcat(outs,os); strcat(outs," "); return el; /* */ } int main() { /* MAIN */ long el=0; char *p,s[1024],as[1024],rs[256],o[256]; el--; strcpy(rs,"test"); StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); strcpy(as,"Dies11 ist221122 ein Test11s22tring von Getstrin11g222"); /* strcpy(as,"Dies11 ist221122 ein "); */ strcpy(o,""); strcpy(s,as); printf("Inputstring = <%s>\nVersion 0.8\n",as); strcpy(as,""); el=test(s,"11","22",rs,o); el=test(s,"D","e",rs,o); el=test(s,"ist",0,rs,o); el=test(s,0,"ist",rs,o); el=test(s,"D","s",rs,o); el=test(s,"s","g",rs,o); el=test(s,"D","g",rs,o); el=test(s,"%","ein",rs,o); el=test(s,"ist","",rs,o); el=test(s,"11","",rs,o); el=test(s,"ist","Test",rs,o); el=test(s,"ist","test",rs,o); el=test(s,"","tstr",rs,o);el=test(s,"","tstr",as,o);el=test(s,"","ein",as,o); el=test(s,"Test","",as,o);el=test(s,"Test","g22",as,o); el=test(s,"","2",rs,o); el=test(s,"2","",rs,o); el=test(s,"tst","",rs,o); el=test(s,"Di","e",rs,o); el=test(s,"st","st",rs,o); el=test(s,"Test","st",rs,o); el=test(s,"D","e",as,o); strcpy(rs,"@"); el=test(s,"D","e",rs,o); el=test(s,"11","22",rs,o); strcpy(s,"html codeDEM142,50"); strcat(s,"138,350,00
"); printf("\nNEW = <%s>\n",s); el=test(s,">","<",as,o); el=test(s,"<",">",as,o); el=test(s,"<",">",0,o); el=test(s,"","","",o); el=test(s,"","","@",o); el=test(s,"","","test",o); p=(char *)RepStrBetweenStrsCpy(0,s,"as","bs",rs); printf("p %x ds=0 \n",p); printf("%s \n",o); if(StringsBase) CloseLibrary(StringsBase); return el; } /* END */ /* Inputstring = IN as < 11> 2 bs < 22> 2 rs = ret f4be l = 64 OUT f4be len 64 IN as < D> 1 bs < e> 1 rs = ret f4be l = 57 OUT f4be len 57 IN as < ist> 3 bs = NULL ret <(null)> 0 l = 0 NOT FOUND OUT <> f4be len 0 as = NULL bs < ist> 3 rs = ret <(null)> 0 l = 0 NOT FOUND OUT <> f4be len 0 IN as < D> 1 bs < s> 1 rs = ret f4be l = 56 OUT f4be len 56 IN as < s> 1 bs < g> 1 rs = ret f4be l = 26 OUT f4be len 26 IN as < D> 1 bs < g> 1 rs = ret f4be l = 25 OUT f4be len 25 IN as < %> 1 bs < ein> 3 rs = ret f4be l = 54 OUT f4be len 54 IN as < ist> 3 bs < > 0 rs = ret f4be l = 58 OUT f4be len 58 IN as < 11> 2 bs < > 0 rs = ret f4be l = 70 OUT f4be len 70 IN as < ist> 3 bs < Test> 4 rs = ret f4be l = 47 OUT f4be len 47 IN as < ist> 3 bs < test> 4 rs = ret f4be l = 54 OUT f4be len 54 IN as < > 0 bs < tstr> 4 rs = ret f4be l = 16 OUT f4be len 16 IN as < > 0 bs < tstr> 4 rs = <> ret f4be l = 12 OUT f4be len 12 IN as < > 0 bs < ein> 3 rs = <> ret f4be l = 37 OUT f4be len 37 IN as < Test> 4 bs < > 0 rs = <> ret f4be l = 54 OUT f4be len 54 IN as < Test> 4 bs < g22> 3 rs = <> ret f4be l = 29 OUT f4be len 29 IN as < > 0 bs < 2> 1 rs = ret f4be l = 45 OUT f4be len 45 IN as < 2> 1 bs < > 0 rs = ret f4be l = 90 OUT f4be len 90 IN as < tst> 3 bs < > 0 rs = ret f4be l = 58 OUT f4be len 58 IN as < Di> 2 bs < e> 1 rs = ret f4be l = 58 OUT f4be len 58 IN as < st> 2 bs < st> 2 rs = ret f4be l = 45 OUT f4be len 45 IN as < Test> 4 bs < st> 2 rs = ret f4be l = 40 OUT f4be len 40 IN as < D> 1 bs < e> 1 rs = <> ret f4be l = 53 OUT f4be len 53 IN as < D> 1 bs < e> 1 rs = <@> ret f4be l = 54 OUT f4be len 54 IN as < 11> 2 bs < 22> 2 rs = <@> ret f4be l = 52 OUT f4be len 52 NEW = <html codeDEM142,50138,350,00
> IN as < >> 1 bs < <> 1 rs = <> ret <
> f4be l = 56 OUT <
> f4be len 56 IN as < <> 1 bs < >> 1 rs = <> ret <<><>html code<><>DEM<><>142,50<><>138,35<><>0,00<><><>> f4be l = 54 OUT <<><>html code<><>DEM<><>142,50<><>138,35<><>0,00<><><>> f4be len 54 IN as < <> 1 bs < >> 1 rs = <(null)> ret <(null)> 0 l = 0 NOT FOUND OUT <> f4be len 0 IN as < > 0 bs < > 0 rs = <> ret <> f4be l = 0 OUT <> f4be len 0 IN as < > 0 bs < > 0 rs = <@> ret <@> f4be l = 1 OUT <@> f4be len 1 IN as < > 0 bs < > 0 rs = ret f4be l = 4 OUT f4be len 4 64 57 0 0 56 26 25 54 58 70 47 54 16 12 37 54 29 45 90 58 58 45 40 53 54 52 56 54 0 0 1 4 64 57 0 0 56 26 25 54 58 70 47 54 16 12 37 54 29 45 90 58 58 45 40 53 54 52 56 54 0 0 1 4 */