/* strindex which returns rightmost occurance */
#include<stdio.h>
int mstrindex(char source[],char searchfor[]);
int main(void)
{
char line[] = "abcdedfabcde";
char pattern[] = "abc";
int found;
/* It should match the a the 7th position. */
found = mstrindex(line, pattern);
printf("Found the right index: %d\n", found
);
}
int mstrindex(char s[],char t[])
{
int i,j,k, result;
result = -1;
for(i=0;s[i]!='\0';i++)
{
for(j=i,k=0;t[k]!='\0' && s[j]==t[k];j++,k++)
;
if(k>0 && t[k] == '\0')
result = i;
}
return result;
}
CS8qIHN0cmluZGV4IHdoaWNoIHJldHVybnMgcmlnaHRtb3N0IG9jY3VyYW5jZSAqLwoKI2luY2x1ZGU8c3RkaW8uaD4KCmludCBtc3RyaW5kZXgoY2hhciBzb3VyY2VbXSxjaGFyIHNlYXJjaGZvcltdKTsKCmludCBtYWluKHZvaWQpCnsKICAgIGNoYXIgbGluZVtdID0gImFiY2RlZGZhYmNkZSI7CiAgICBjaGFyIHBhdHRlcm5bXSA9ICJhYmMiOwoKICAgIGludCBmb3VuZDsKCiAgICAvKiBJdCBzaG91bGQgbWF0Y2ggdGhlIGEgdGhlIDd0aCBwb3NpdGlvbi4gKi8KCiAgICBmb3VuZCA9IG1zdHJpbmRleChsaW5lLCBwYXR0ZXJuKTsKCiAgICBwcmludGYoIkZvdW5kIHRoZSByaWdodCBpbmRleDogJWRcbiIsIGZvdW5kKTsKCn0KCmludCBtc3RyaW5kZXgoY2hhciBzW10sY2hhciB0W10pCnsKICAgIGludCBpLGosaywgcmVzdWx0OwoKICAgIHJlc3VsdCA9IC0xOwoKICAgIGZvcihpPTA7c1tpXSE9J1wwJztpKyspCiAgICB7CiAgICAgICAgZm9yKGo9aSxrPTA7dFtrXSE9J1wwJyAmJiBzW2pdPT10W2tdO2orKyxrKyspCiAgICAgICAgICAgIDsKICAgICAgICBpZihrPjAgJiYgdFtrXSA9PSAnXDAnKQogICAgICAgICAgICByZXN1bHQgPSBpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoK