#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* replaceSubstring(const char* str, const char* oldSub, const char* newSub) {
const char* pos
= strstr(str
, oldSub
); if (!pos) return strdup(str); // oldSub not found, return original string
size_t beforeLen = pos - str;
size_t oldLen
= strlen(oldSub
); size_t newLen
= strlen(newSub
); size_t afterLen
= strlen(pos
+ oldLen
);
// Allocate memory for new string
char* result
= malloc(beforeLen
+ newLen
+ afterLen
+ 1); if (!result) return NULL;
// Copy parts
memcpy(result
, str
, beforeLen
); memcpy(result
+ beforeLen
, newSub
, newLen
); memcpy(result
+ beforeLen
+ newLen
, pos
+ oldLen
, afterLen
); result[beforeLen + newLen + afterLen] = '\0';
return result;
}
int main() {
const char* original = "Hello World!";
const char* oldSub = "World";
const char* newSub = "C";
char* replaced = replaceSubstring(original, oldSub, newSub);
printf("Result: %s\n", replaced
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKY2hhciogcmVwbGFjZVN1YnN0cmluZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIG9sZFN1YiwgY29uc3QgY2hhciogbmV3U3ViKSB7CiAgICBjb25zdCBjaGFyKiBwb3MgPSBzdHJzdHIoc3RyLCBvbGRTdWIpOwogICAgaWYgKCFwb3MpIHJldHVybiBzdHJkdXAoc3RyKTsgLy8gb2xkU3ViIG5vdCBmb3VuZCwgcmV0dXJuIG9yaWdpbmFsIHN0cmluZwoKICAgIHNpemVfdCBiZWZvcmVMZW4gPSBwb3MgLSBzdHI7CiAgICBzaXplX3Qgb2xkTGVuID0gc3RybGVuKG9sZFN1Yik7CiAgICBzaXplX3QgbmV3TGVuID0gc3RybGVuKG5ld1N1Yik7CiAgICBzaXplX3QgYWZ0ZXJMZW4gPSBzdHJsZW4ocG9zICsgb2xkTGVuKTsKCiAgICAvLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBzdHJpbmcKICAgIGNoYXIqIHJlc3VsdCA9IG1hbGxvYyhiZWZvcmVMZW4gKyBuZXdMZW4gKyBhZnRlckxlbiArIDEpOwogICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwoKICAgIC8vIENvcHkgcGFydHMKICAgIG1lbWNweShyZXN1bHQsIHN0ciwgYmVmb3JlTGVuKTsKICAgIG1lbWNweShyZXN1bHQgKyBiZWZvcmVMZW4sIG5ld1N1YiwgbmV3TGVuKTsKICAgIG1lbWNweShyZXN1bHQgKyBiZWZvcmVMZW4gKyBuZXdMZW4sIHBvcyArIG9sZExlbiwgYWZ0ZXJMZW4pOwogICAgcmVzdWx0W2JlZm9yZUxlbiArIG5ld0xlbiArIGFmdGVyTGVuXSA9ICdcMCc7CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7CiAgICBjb25zdCBjaGFyKiBvcmlnaW5hbCA9ICJIZWxsbyBXb3JsZCEiOwogICAgY29uc3QgY2hhciogb2xkU3ViID0gIldvcmxkIjsKICAgIGNvbnN0IGNoYXIqIG5ld1N1YiA9ICJDIjsKCiAgICBjaGFyKiByZXBsYWNlZCA9IHJlcGxhY2VTdWJzdHJpbmcob3JpZ2luYWwsIG9sZFN1YiwgbmV3U3ViKTsKICAgIHByaW50ZigiUmVzdWx0OiAlc1xuIiwgcmVwbGFjZWQpOwoKICAgIGZyZWUocmVwbGFjZWQpOwogICAgcmV0dXJuIDA7Cn0KCg==