#include <stdio.h>
const char *find_a_substring(const char *string, const char *substring)
{
if (string == NULL || substring == NULL ||
*substring == 0 || *string == 0) return NULL;
for(const char * t = substring;*string;++string, t = substring)
{
for(const char *s = string; *s && *t && *t == *s; ++s, ++t);
if (*t == 0) return string;
}
return NULL;
}
int main(int argc, const char * argv[])
{
printf("%s\n",find_a_substring
("Hello world!","o w")); printf("%s\n",find_a_substring
("Hello world!","H")); printf("%s\n",find_a_substring
("Hello world!","!")); printf("%s\n",find_a_substring
("Hello world!","world!!!")); }
I2luY2x1ZGUgPHN0ZGlvLmg+Cgpjb25zdCBjaGFyICpmaW5kX2Ffc3Vic3RyaW5nKGNvbnN0IGNoYXIgKnN0cmluZywgY29uc3QgY2hhciAqc3Vic3RyaW5nKQp7CiAgICBpZiAoc3RyaW5nID09IE5VTEwgfHwgc3Vic3RyaW5nID09IE5VTEwgfHwKICAgICAgICpzdWJzdHJpbmcgPT0gMCB8fCAqc3RyaW5nID09IDApIHJldHVybiBOVUxMOwogICAgZm9yKGNvbnN0IGNoYXIgKiB0ID0gc3Vic3RyaW5nOypzdHJpbmc7KytzdHJpbmcsIHQgPSBzdWJzdHJpbmcpCiAgICB7CiAgICAgICAgZm9yKGNvbnN0IGNoYXIgKnMgPSBzdHJpbmc7ICpzICYmICp0ICYmICp0ID09ICpzOyArK3MsICsrdCk7CiAgICAgICAgaWYgKCp0ID09IDApIHJldHVybiBzdHJpbmc7CiAgICB9CiAgICByZXR1cm4gTlVMTDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCnsKICAgIHByaW50ZigiJXNcbiIsZmluZF9hX3N1YnN0cmluZygiSGVsbG8gd29ybGQhIiwibyB3IikpOwogICAgcHJpbnRmKCIlc1xuIixmaW5kX2Ffc3Vic3RyaW5nKCJIZWxsbyB3b3JsZCEiLCJIIikpOwogICAgcHJpbnRmKCIlc1xuIixmaW5kX2Ffc3Vic3RyaW5nKCJIZWxsbyB3b3JsZCEiLCIhIikpOwogICAgcHJpbnRmKCIlc1xuIixmaW5kX2Ffc3Vic3RyaW5nKCJIZWxsbyB3b3JsZCEiLCJ3b3JsZCEhISIpKTsKfQo=