#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int find_substring(char * buffer, int size, char * substring)
{
char * init_buffer= buffer;
char c, sc;
size_t len;
if ((c = *substring++) != 0) {
do {
do {
if(buffer-init_buffer>size-len)
{
return -1;
}
sc = *buffer++;
} while (sc != c);
} while (strncmp(buffer
, substring
, len
) != 0); }
return buffer-init_buffer+len;
}
int main(void) {
char text[9]="ababababc";
char * find="abc";
printf("%d\n",find_substring
(text
,9,find
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKCmludCBmaW5kX3N1YnN0cmluZyhjaGFyICogYnVmZmVyLCBpbnQgc2l6ZSwgY2hhciAqIHN1YnN0cmluZykKewogICAgY2hhciAqIGluaXRfYnVmZmVyPSBidWZmZXI7CiAgICBjaGFyIGMsIHNjOwogICAgc2l6ZV90IGxlbjsKCiAgICBpZiAoKGMgPSAqc3Vic3RyaW5nKyspICE9IDApIHsKICAgICAgICBsZW4gPSBzdHJsZW4oc3Vic3RyaW5nKTsKICAgICAgICBkbyB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmKGJ1ZmZlci1pbml0X2J1ZmZlcj5zaXplLWxlbikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzYyA9ICpidWZmZXIrKzsKICAgICAgICAgICAgfSB3aGlsZSAoc2MgIT0gYyk7CiAgICAgICAgfSB3aGlsZSAoc3RybmNtcChidWZmZXIsIHN1YnN0cmluZywgbGVuKSAhPSAwKTsKICAgIH0KICAgIHJldHVybiBidWZmZXItaW5pdF9idWZmZXIrbGVuOwp9CgppbnQgbWFpbih2b2lkKSB7CgljaGFyIHRleHRbOV09ImFiYWJhYmFiYyI7CgljaGFyICogZmluZD0iYWJjIjsKCXByaW50ZigiJWRcbiIsZmluZF9zdWJzdHJpbmcodGV4dCw5LGZpbmQpKTsKCXJldHVybiAwOwp9Cg==