struct StringsBase *StringsBase=0L; /*#define RUN*/ #ifdef RUN char *StrnRvCpy(d,s,l) register char *d,*s; register long l; { register char *p,c; if(p=d) { c=*s; do ; while(*p++=*s++); p=s=d; if((l>1)&&(c)) { l++; do ; while((*s++) && --l); s--; s--; do { c=*p; *p++=*s; *s=c; s--; } while (p",s); printf("%16s %3ld ",o,l); p=(char *)StrnRvCpy(d,s,l); sprintf(o,"<%s>",d); printf(" %16s",o); sprintf(o,"<%s>",p); printf(" %16s\n",o); return 0; /* */ } int main() { /* MAIN */ long el=0; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); puts(" Input n Output return"); el=test("StrnRvCpy",4); el=test("testStrnRvCpy",4); el=test("testStrnRvCpy",5); el=test("testStrnRvCpy",22); el=test("string",9); el=test("abc",6); el=test("ab",6); el=test("a",6); el=test("",3); el=test("abcd",0); el=test("abcd",1); el=test("abcd",2); el=test("abcd",3); el=test("abcd",4); el=test("abcd",5); if(StringsBase) CloseLibrary(StringsBase); return el; } /* END */ #ifdef COMMENT Input n Output return 4 4 5 22 9 6 6 6 <> 3 <> <> 0 1 2 3 4 5 #endif