#include <stdio.h>
int main()
{
char c_to_search[5] = "asdf";
char text[68] = "hello my name is \0 there is some other string behind it \n\0 asdf";
int pos_search = 0;
int pos_text = 0;
int len_search = 4;
int len_text = 67;
for (pos_text = 0; pos_text < len_text - len_search;++pos_text)
{
if(text[pos_text] == c_to_search[pos_search])
{
++pos_search;
if(pos_search == len_search)
{
// match
printf("match from %d to %d\n",pos_text
-len_search
,pos_text
); return;
}
}
else
{
pos_text -=pos_search;
pos_search = 0;
}
}
// no match
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBtYWluKCkKewogICAgY2hhciBjX3RvX3NlYXJjaFs1XSA9ICJhc2RmIjsKCiAgICBjaGFyIHRleHRbNjhdID0gImhlbGxvIG15IG5hbWUgaXMgXDAgdGhlcmUgaXMgc29tZSBvdGhlciBzdHJpbmcgYmVoaW5kIGl0IFxuXDAgYXNkZiI7CgogICAgaW50IHBvc19zZWFyY2ggPSAwOwogICAgaW50IHBvc190ZXh0ID0gMDsKICAgIGludCBsZW5fc2VhcmNoID0gNDsKICAgIGludCBsZW5fdGV4dCA9IDY3OwogICAgZm9yIChwb3NfdGV4dCA9IDA7IHBvc190ZXh0IDwgbGVuX3RleHQgLSBsZW5fc2VhcmNoOysrcG9zX3RleHQpCiAgICB7CiAgICAgICAgaWYodGV4dFtwb3NfdGV4dF0gPT0gY190b19zZWFyY2hbcG9zX3NlYXJjaF0pCiAgICAgICAgewogICAgICAgICAgICArK3Bvc19zZWFyY2g7CiAgICAgICAgICAgIGlmKHBvc19zZWFyY2ggPT0gbGVuX3NlYXJjaCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gbWF0Y2gKICAgICAgICAgICAgICAgIHByaW50ZigibWF0Y2ggZnJvbSAlZCB0byAlZFxuIixwb3NfdGV4dC1sZW5fc2VhcmNoLHBvc190ZXh0KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgICAgICAgIHBvc190ZXh0IC09cG9zX3NlYXJjaDsKICAgICAgICAgICAgICAgcG9zX3NlYXJjaCA9IDA7CiAgICAgICB9CiAgICB9CiAgICAvLyBubyBtYXRjaAogICAgcHJpbnRmKCJubyBtYXRjaFxuIik7CiAgIHJldHVybiAwOwp9