子串插入:

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

int main() {
    char str[100], substr[50];
    int pos;
    printf("请输入主串:");
    gets(str);
    printf("请输入要插入的子串:");
    gets(substr);
    printf("请输入插入位置:");
    scanf("%d", &pos);

    int len1 = strlen(str);
    int len2 = strlen(substr);
    if (pos < 0 || pos > len1) {
        printf("插入位置错误!\n");
        return 0;
    }

    // 将主串从插入位置后面的字符向后移动
    for (int i = len1; i >= pos; i--) {
        str[i+len2] = str[i];
    }
    // 将子串插入到主串指定位置
    for (int i = 0; i < len2; i++) {
        str[pos+i] = substr[i];
    }

    printf("插入后的主串为:%s\n", str);
    return 0;
}

子串置换:

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

int main() {
    char str[100], substr[50], newstr[100];
    printf("请输入主串:");
    gets(str);
    printf("请输入要替换的子串:");
    gets(substr);
    printf("请输入新的子串:");
    gets(newstr);

    int len1 = strlen(str);
    int len2 = strlen(substr);
    int len3 = strlen(newstr);

    // 先找到要替换的子串在主串中的位置
    char *p = strstr(str, substr);
    if (p == NULL) {
        printf("主串中未找到要替换的子串!\n");
        return 0;
    }

    // 将主串中要替换的子串后面的字符向后移动
    for (int i = len1; i >= p-str+len2; i--) {
        str[i+len3-len2] = str[i];
    }
    // 将新的子串插入到主串中要替换的子串的位置
    for (int i = 0; i < len3; i++) {
        str[p-str+i] = newstr[i];
    }

    printf("替换后的主串为:%s\n", str);
    return 0;
}
用C语言写一个子串插入和子串置换的代码

原文地址: https://www.cveoy.top/t/topic/btWA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录