编辑代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// 函数用于替换字符串中指定位置的字符
char* replaceCharsInRange(char* original, int start, int end, const char* replacement) {
    if (original == NULL || replacement == NULL) return NULL;

    int len_original = strlen(original);
    if (start < 0 || end >= len_original || start > end) {
        printf("Invalid range for replacement.\n");
        return original;
    }

    // 计算替换后字符串的总长度
    int len_replacement = strlen(replacement);
    int new_len = len_original + len_replacement - (end - start + 1);

    // 分配足够的内存给新字符串
    char* new_str = (char*)malloc(new_len + 1); // +1是为了存储结束的'\0'
    if (new_str == NULL) {
        printf("Memory allocation failed.\n");
        return original;
    }

    // 复制原始字符串到新字符串,直到替换开始的位置
    strncpy(new_str, original, start);
    new_str[start] = '\0'; // 确保字符串结束

    // 添加替换字符串
    strcat(new_str, replacement);

    // 追加剩余部分(如果有的话)
    strcat(new_str, &original[end + 1]);

    // 返回新字符串
    return new_str;
}

int main() {
    char originalStr[] = "HelloddsadWorld!";
    char* replacement = "ABCD";
    
    // 替换第6至第9位的字符
    char* modifiedStr = replaceCharsInRange(originalStr, 5, 8, replacement);
    if (modifiedStr) {
        printf("Original: %s\n", originalStr);
        printf("Modified: %s\n", modifiedStr);
        free(modifiedStr); // 不要忘记释放分配的内存
    }

    return 0;
}