温馨提示×

c语言编程如何从字符串中删除子字符串

小亿
105
2024-09-26 00:29:09
栏目: 编程语言

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

  1. 使用strcpy()strlen()函数
  2. 使用memmove()函数

下面是两种方法的示例代码:

方法1:使用strcpy()strlen()函数

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

void remove_substring(char *str, const char *sub) {
    char result[strlen(str) + 1];
    char *src, *dst;

    src = str;
    dst = result;

    while (*src != '\0') {
        if (strncmp(src, sub, strlen(sub)) != 0) {
            *dst++ = *src;
        }
        src++;
    }
    *dst = '\0';

    strcpy(str, result);
}

int main() {
    char str[] = "Hello, I am a C programming assistant.";
    const char *sub = "C programming";

    printf("Original string: %s\n", str);
    remove_substring(str, sub);
    printf("After removing substring: %s\n", str);

    return 0;
}

方法2:使用memmove()函数

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

void remove_substring(char *str, const char *sub) {
    char *src, *dst;
    size_t sub_len = strlen(sub);

    src = str;
    dst = str;

    while (*src != '\0') {
        if (strncmp(src, sub, sub_len) != 0) {
            dst = src;
        }
        src++;
    }

    *dst = '\0';
}

int main() {
    char str[] = "Hello, I am a C programming assistant.";
    const char *sub = "C programming";

    printf("Original string: %s\n", str);
    remove_substring(str, sub);
    printf("After removing substring: %s\n", str);

    return 0;
}

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

0