在C语言中,要从字符串中删除子字符串,你可以使用以下方法:
strcpy()
和strlen()
函数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;
}
请注意,这两种方法都会修改原始字符串。如果你需要保留原始字符串,可以创建一个新的字符串来存储结果。