使用C语言从主字符串中删除子字符串可以通过以下步骤实现:
char* removeSubstring(const char* mainStr, const char* subStr);
strstr
函数来查找子字符串在主字符串中的位置,并使用strcpy
函数将剩余的字符串复制到新的字符串中。#include <stdio.h>
#include <string.h>
char* removeSubstring(const char* mainStr, const char* subStr) {
char* result = (char*)malloc(strlen(mainStr) + 1); // 分配足够的内存来存储结果字符串
char* current = result; // 当前位置指针
const char* remaining = mainStr; // 剩余的字符串指针
while (1) {
const char* found = strstr(remaining, subStr); // 查找子字符串在主字符串中的位置
if (found == NULL) {
strcpy(current, remaining); // 将剩余的字符串复制到结果字符串中
break;
}
// 复制子字符串之前的部分到结果字符串中
strncpy(current, remaining, found - remaining);
current += found - remaining;
remaining = found + strlen(subStr); // 更新剩余的字符串指针
}
return result;
}
removeSubstring
函数并打印结果字符串。int main() {
const char* mainStr = "Hello World! This is a test.";
const char* subStr = "is ";
char* result = removeSubstring(mainStr, subStr);
printf("Result: %s\n", result);
free(result); // 释放结果字符串的内存
return 0;
}
这样,当运行程序时,将会输出删除子字符串后的结果:
Result: Hello World! Th a test.
这个方法适用于从主字符串中删除所有的子字符串。如果只想删除第一个匹配的子字符串,可以在找到子字符串后立即跳出循环。
领取专属 10元无门槛券
手把手带您无忧上云