c语言

c语言怎么删除字符串的子串

小亿
87
2024-09-26 00:31:59
栏目: 编程语言

在C语言中,要删除字符串中的子串,你可以使用以下方法:

  1. 使用strcpy()strlen()函数:
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, World!";
    char sub[] = "World";
    char result[strlen(str) + 1];

    strcpy(result, str);
    int index = strstr(result, sub) - result;
    strncpy(result + index, result + index + strlen(sub), strlen(result) - index - strlen(sub));
    result[strlen(result)] = '\0';

    printf("Original string: %s\n", str);
    printf("Modified string: %s\n", result);

    return 0;
}
  1. 使用realloc()free()函数:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* remove_substring(char *str, const char *sub) {
    char *result = strdup(str);
    char *index = strstr(result, sub);

    if (index) {
        *index = '\0';
        realloc(result, strlen(result) - strlen(sub) + 1);
    }

    return result;
}

int main() {
    char str[] = "Hello, World!";
    char sub[] = "World";
    char *result = remove_substring(str, sub);

    printf("Original string: %s\n", str);
    printf("Modified string: %s\n", result);

    free(result);

    return 0;
}

请注意,这些方法都会修改原始字符串。如果你需要保留原始字符串,请创建一个新的字符串来存储结果。

0
看了该问题的人还看了