编写一个函数实现从源字符串中查找目标字符串,并进行替换。如输入源字符串“We love math!”,查找目标字符串“math”,并将其替换为字符串“CProgram”,在主函数中输出替换后的字符串“We love C Program!”. 【算法设计】 (1)从键盘输入源字符串; (2)从键盘输入目标字符串和替换的字符串; (3)调用函数实现查找源字符串中的目标字符串,并进行替换; (4)输出完成查找和替换后的字符串。 【关键代码】 由于在源字符串中查找目标字符串并替换的功能在自定义函数中实现,因此函数的形式参数需有三个:一个为源字符串,一个为目标字符串,还有一个为替换的字符串。函数的返回值为完成查找和替换操作后的字符串。若字符串中没有查找到目标字符串,则返回“No Found!”字符串。因此函数的首部可以为: char *replace(char source,char *target,char *string) 其中 source为字符型的指针变量,存放源字符串的首地址:target存放目标字符串的首地址:string用于存放替换后的字符串的首地址,该函数返回的是一个字符型的指针。
时间: 2023-12-30 19:04:11 浏览: 56
好的,以下是实现代码:
```c
#include <stdio.h>
#include <string.h>
char *replace(char *source, char *target, char *string) {
char *result;
int i, count = 0;
int targetLen = strlen(target);
int replaceLen = strlen(string);
// 统计目标字符串在源字符串中出现的次数
for (i = 0; source[i] != '\0'; i++) {
if (strstr(&source[i], target) == &source[i]) {
count++;
i += targetLen - 1;
}
}
// 分配替换后的字符串需要的空间
result = (char *)malloc(i + count * (replaceLen - targetLen) + 1);
i = 0;
while (*source) {
if (strstr(source, target) == source) {
strcpy(&result[i], string);
i += replaceLen;
source += targetLen;
} else {
result[i++] = *source++;
}
}
result[i] = '\0';
return result;
}
int main() {
char source[100], target[20], string[20];
printf("请输入源字符串:");
gets(source);
printf("请输入目标字符串:");
gets(target);
printf("请输入替换的字符串:");
gets(string);
char *result = replace(source, target, string);
printf("替换后的字符串为:%s\n", result);
return 0;
}
```
在主函数中,先从键盘输入源字符串、目标字符串和替换字符串,然后调用 `replace` 函数进行替换操作,最后输出替换后的字符串。
`replace` 函数中先统计目标字符串在源字符串中出现的次数,然后根据目标字符串和替换字符串的长度计算替换后的字符串需要的空间,然后分配空间并进行替换操作,最后返回替换后的字符串。
阅读全文