编写算法,实现串的基本操作Replace(&S,T,V)。(注:《数据结构题集(C语言版)》,第4章,第4.17题。)
时间: 2024-10-21 07:01:27 浏览: 38
编写一个 C 语言函数 `replace` 来实现字符串 S 中所有 T 子串替换为 V 的操作,可以采用以下步骤:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
void replace(char* str, const char* old_sub, const char* new_sub);
int main() {
char S[] = "Hello World, Hello Again!";
char T[] = "Hello";
char V[] = "Hi";
printf("Original string: %s\n", S);
replace(S, T, V);
printf("Modified string: %s\n", S);
return 0;
}
// 实现 replace 函数
void replace(char* str, const char* old_sub, const char* new_sub) {
while (strstr(str, old_sub) != NULL) { // 使用 strstr 查找子串
size_t pos = strlen(old_sub); // 获取旧子串的位置
str[pos - 1] = '\0'; // 确保在替换前结束旧子串
// 将新子串插入到原位置
strncpy(str + strlen(old_sub), new_sub, strlen(new_sub));
str[strlen(str) - 1] = '\0'; // 更新字符串长度
str += strlen(new_sub); // 移动指针到新子串之后继续查找
}
}
阅读全文