#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
const char* beforePrefix = "asdfasdfasdfasdf";
const char* prefix = "<!doctortype html";
const char* suffix = ".html>";
const char* postSuffix = "asdasdasd";
unsigned size = 1024;
char buf[size];
sprintf(buf, "%s%sTHE STRING YOU WANT TO GET%s%s", beforePrefix, prefix, suffix, postSuffix);
cout << "Before: " << buf << endl;
const char* firstOccurenceOfPrefixPtr = strstr(buf, prefix);
const char* firstOccurenceOfSuffixPtr = strstr(buf, suffix);
if (firstOccurenceOfPrefixPtr && firstOccurenceOfSuffixPtr)
{
unsigned textLen = (unsigned)(firstOccurenceOfSuffixPtr - firstOccurenceOfPrefixPtr - strlen(prefix));
char newBuf[size];
strncpy(newBuf, firstOccurenceOfPrefixPtr + strlen(prefix), textLen);
newBuf[textLen] = 0;
cout << "After: " << newBuf << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0cmluZz4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkKewogICAgY29uc3QgY2hhciogYmVmb3JlUHJlZml4ID0gImFzZGZhc2RmYXNkZmFzZGYiOwogICAgY29uc3QgY2hhciogcHJlZml4ID0gIjwhZG9jdG9ydHlwZSBodG1sIjsKICAgIGNvbnN0IGNoYXIqIHN1ZmZpeCA9ICIuaHRtbD4iOwogICAgY29uc3QgY2hhciogcG9zdFN1ZmZpeCA9ICJhc2Rhc2Rhc2QiOwogICAgCiAgICB1bnNpZ25lZCBzaXplID0gMTAyNDsKICAgIGNoYXIgYnVmW3NpemVdOwogICAgc3ByaW50ZihidWYsICIlcyVzVEhFIFNUUklORyBZT1UgV0FOVCBUTyBHRVQlcyVzIiwgYmVmb3JlUHJlZml4LCBwcmVmaXgsIHN1ZmZpeCwgcG9zdFN1ZmZpeCk7CiAgICAKICAgIGNvdXQgPDwgIkJlZm9yZTogIiA8PCBidWYgPDwgZW5kbDsKICAgIAogICAgY29uc3QgY2hhciogZmlyc3RPY2N1cmVuY2VPZlByZWZpeFB0ciA9IHN0cnN0cihidWYsIHByZWZpeCk7CiAgICBjb25zdCBjaGFyKiBmaXJzdE9jY3VyZW5jZU9mU3VmZml4UHRyID0gc3Ryc3RyKGJ1Ziwgc3VmZml4KTsKICAgIAogICAgaWYgKGZpcnN0T2NjdXJlbmNlT2ZQcmVmaXhQdHIgJiYgZmlyc3RPY2N1cmVuY2VPZlN1ZmZpeFB0cikKICAgIHsKICAgICAgICB1bnNpZ25lZCB0ZXh0TGVuID0gKHVuc2lnbmVkKShmaXJzdE9jY3VyZW5jZU9mU3VmZml4UHRyIC0gZmlyc3RPY2N1cmVuY2VPZlByZWZpeFB0ciAtIHN0cmxlbihwcmVmaXgpKTsKICAgICAgICBjaGFyIG5ld0J1ZltzaXplXTsKICAgICAgICBzdHJuY3B5KG5ld0J1ZiwgZmlyc3RPY2N1cmVuY2VPZlByZWZpeFB0ciArIHN0cmxlbihwcmVmaXgpLCB0ZXh0TGVuKTsKICAgICAgICBuZXdCdWZbdGV4dExlbl0gPSAwOwogICAgCiAgICAgICAgY291dCA8PCAiQWZ0ZXI6ICIgPDwgbmV3QnVmIDw8IGVuZGw7CiAgICB9CiAgICAKICAgIHJldHVybiAwOwp9