struct        StringsBase     *StringsBase=0L;

/*#define RUN*/
#ifdef  RUN

char *StrStr(cs,ct) char *cs,*ct; {    /*  */
  char c,searchc,*p=cs,*pt=ct;
  do                                                                      {
    searchc=*pt; c=*p;
    if((c!=searchc))   { p=++cs; pt=ct; }
    if(c==searchc)      { p++; pt++; }
  }  while(searchc && c); /* entweder String od. Suchstring sind zu Ende*/
  if(c) cs--;
  if(searchc) cs=0;
  return cs;
 };                                                  /* strstr $VER 0.3 */

#endif

long test(s,ct) char *s,*ct; {
  long el=0; char *p=(char *)StrStr(s,ct); char *sa[64],*sb[64],*sp[64];
  StrCpy(sa,"<"); StrCat(sa,s); StrCpy(sp,"<");
  StrCpy(sb,"<"); StrCat(sb,ct);
  if(p) { StrCat(sp,p); printf("%22s> %22s> %22s>\n",sa,sb,sp); }
  if(!p) printf("%22s> %22s>   not found (p=NULL) \n",sa,sb);
  return el; /*  */
 };

int main() {                               /* MAIN */
  long el=0; char *s[64]; strcpy(s,"string");
  StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0);
  puts("/*          Input             Search                  Out ");
  el=test("test StrStr","Str");         el=test("test StrStr","gh");
  el=test("test StrStr","t");           el=test("tes test StrStr","test");
  el=test("g","j");   el=test("g","g");         el=test("g","");
  el=test("","");     el=test("","h");          el=test("änd","n");
  el=test("änd","d"); el=test("änd","änd");     el=test("l1","l1");
  el=test(s,"s");     el=test(s,"t");           el=test(s,"r");
  el=test(s,"i");     el=test(s,"n");           el=test(s,"g");
  el=test(s,"st");    el=test(s,"tr");          el=test(s,"ri");
  el=test(s,"in");    el=test(s,"ng");          el=test(s,"str");
  el=test(s,"tri");   el=test(s,"rin");         el=test(s,"ing");
  el=test(s,"stri");  el=test(s,"trin");        el=test(s,"ring");
  el=test(s,"strin"); el=test(s,"tring");       el=test(s,"s");
  el=test(s,"sa");    el=test("++L7","+L");
  el=test( "   bne    L7","L");     el=test( "   bne   -L7","-L");
  puts("*/");
  if(StringsBase) CloseLibrary(StringsBase);
  return el;
 }                                                             /* END */
/*
verschiedene Compiler verschiedene Ergebnisse:

Was ist der korrekte Ruechgabewert bei?:

     p=strstr("","")

Ist p=NULL korrekt ?
Ich hab mich fuer die Turbo C Version entschieden!


Turbo C 2.01:

  IN         len    search   len   OUT     len   adr
 <strstr>     6       <rs>    2   <rstr>    4    fbd2
 <strstr>     6      <aaa>    3 <(null)>    0    0
 <strstr>     6         <>    0 <strstr>    6    fbd0
       <>     0         <>    0       <>    0    20d

HCC  0.2

  IN         len    search   len   OUT     len   adr
 <strstr>     6       <rs>    2   <rstr>    4    2619CA
 <strstr>     6      <aaa>    3       <>    0    0
 <strstr>     6         <>    0       <>    0    2619CE
       <>     0         <>    0       <>    0    21E0BD

strstr  DICE V2.06.21 29 April 1991

  IN         len    search   len   OUT     len   adr
 <strstr>     6       <rs>    2   <rstr>    4    7a1076e
 <strstr>     6      <aaa>    3       <>    0    0
 <strstr>     6         <>    0       <>    0    0
       <>     0         <>    0       <>    0    0

StrStr: Strings.library 0.5

 <strstr>     6       <rs>    2     rstr    4    261FEA
 <strstr>     6      <aaa>    3             0    0
 <strstr>     6         <>    0   strstr    6    261FE8
       <>     0         <>    0             0    21DE21

------------------------  */
/*          Input             Search                  Out
          <test StrStr>                   <Str>                <StrStr>
          <test StrStr>                    <gh>   not found (p=NULL)
          <test StrStr>                     <t>           <test StrStr>
      <tes test StrStr>                  <test>           <test StrStr>
                    <g>                     <j>   not found (p=NULL)
                    <g>                     <g>                     <g>
                    <g>                      <>                     <g>
                     <>                      <>                      <>
                     <>                     <h>   not found (p=NULL)
                  <änd>                     <n>                    <nd>
                  <änd>                     <d>                     <d>
                  <änd>                   <änd>                   <änd>
                   <l1>                    <l1>                    <l1>
               <string>                     <s>                <string>
               <string>                     <t>                 <tring>
               <string>                     <r>                  <ring>
               <string>                     <i>                   <ing>
               <string>                     <n>                    <ng>
               <string>                     <g>                     <g>
               <string>                    <st>                <string>
               <string>                    <tr>                 <tring>
               <string>                    <ri>                  <ring>
               <string>                    <in>                   <ing>
               <string>                    <ng>                    <ng>
               <string>                   <str>                <string>
               <string>                   <tri>                 <tring>
               <string>                   <rin>                  <ring>
               <string>                   <ing>                   <ing>
               <string>                  <stri>                <string>
               <string>                  <trin>                 <tring>
               <string>                  <ring>                  <ring>
               <string>                 <strin>                <string>
               <string>                 <tring>                 <tring>
               <string>                     <s>                <string>
               <string>                    <sa>   not found (p=NULL)
                 <++L7>                    <+L>                   <+L7>
         <   bne    L7>                     <L>                    <L7>
         <   bne   -L7>                    <-L>                   <-L7>
*/

