#include <iostream>
#include <cstring>
char* makeString(const char* srcStr, const char* subStr, char delim)
{
size_t srcStrLength = std::strlen(srcStr);
size_t subStrLength = std::strlen(subStr);
//тут типа создаем массив достаточной длины, хуемое,
//чтобы уместить строку, которая в худшем варианте
//будет полностью состоять из delim-символов
char* resultStr = new char[srcStrLength + srcStrLength * subStrLength + 1];
size_t resultStrLength = 0;
for(size_t i = 0; i < srcStrLength; i++)
{
resultStr[resultStrLength] = srcStr[i];
resultStrLength++;
if(srcStr[i] == delim)
{
std::strcpy(resultStr + resultStrLength, subStr);
resultStrLength = resultStrLength + subStrLength;
}
}
resultStr[resultStrLength] = '\0';
return resultStr;
}
int main() {
const char* src = "abc*x*asd**as*e";
const char* subStr = "12345";
char delim = '*';
char* res = makeString(src, subStr, delim);
std::cout << "res = " << res << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCmNoYXIqIG1ha2VTdHJpbmcoY29uc3QgY2hhciogc3JjU3RyLCBjb25zdCBjaGFyKiBzdWJTdHIsIGNoYXIgZGVsaW0pCnsKICAgIHNpemVfdCBzcmNTdHJMZW5ndGggPSBzdGQ6OnN0cmxlbihzcmNTdHIpOwogICAgc2l6ZV90IHN1YlN0ckxlbmd0aCA9IHN0ZDo6c3RybGVuKHN1YlN0cik7CgogICAgLy/RgtGD0YIg0YLQuNC/0LAg0YHQvtC30LTQsNC10Lwg0LzQsNGB0YHQuNCyINC00L7RgdGC0LDRgtC+0YfQvdC+0Lkg0LTQu9C40L3Riywg0YXRg9C10LzQvtC1LAogICAgLy/Rh9GC0L7QsdGLINGD0LzQtdGB0YLQuNGC0Ywg0YHRgtGA0L7QutGDLCDQutC+0YLQvtGA0LDRjyDQsiDRhdGD0LTRiNC10Lwg0LLQsNGA0LjQsNC90YLQtQogICAgLy/QsdGD0LTQtdGCINC/0L7Qu9C90L7RgdGC0YzRjiDRgdC+0YHRgtC+0Y/RgtGMINC40LcgZGVsaW0t0YHQuNC80LLQvtC70L7QsgogICAgY2hhciogcmVzdWx0U3RyID0gbmV3IGNoYXJbc3JjU3RyTGVuZ3RoICsgc3JjU3RyTGVuZ3RoICogc3ViU3RyTGVuZ3RoICsgMV07CgogICAgc2l6ZV90IHJlc3VsdFN0ckxlbmd0aCA9IDA7CgogICAgZm9yKHNpemVfdCBpID0gMDsgaSA8IHNyY1N0ckxlbmd0aDsgaSsrKQogICAgewogICAgICAgIHJlc3VsdFN0cltyZXN1bHRTdHJMZW5ndGhdID0gc3JjU3RyW2ldOwogICAgICAgIHJlc3VsdFN0ckxlbmd0aCsrOwoKICAgICAgICBpZihzcmNTdHJbaV0gPT0gZGVsaW0pCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OnN0cmNweShyZXN1bHRTdHIgKyByZXN1bHRTdHJMZW5ndGgsIHN1YlN0cik7CiAgICAgICAgICAgIHJlc3VsdFN0ckxlbmd0aCA9IHJlc3VsdFN0ckxlbmd0aCArIHN1YlN0ckxlbmd0aDsKICAgICAgICB9CiAgICB9CgogICAgcmVzdWx0U3RyW3Jlc3VsdFN0ckxlbmd0aF0gPSAnXDAnOwoKICAgIHJldHVybiByZXN1bHRTdHI7Cn0KCmludCBtYWluKCkgewoJICAgIGNvbnN0IGNoYXIqIHNyYyA9ICJhYmMqeCphc2QqKmFzKmUiOwogICAgY29uc3QgY2hhciogc3ViU3RyID0gIjEyMzQ1IjsKICAgIGNoYXIgZGVsaW0gPSAnKic7CgogICAgY2hhciogcmVzID0gbWFrZVN0cmluZyhzcmMsIHN1YlN0ciwgZGVsaW0pOwoKICAgIHN0ZDo6Y291dCA8PCAicmVzID0gIiA8PCByZXMgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=