编写一个函数实现从源字符串中查找目标字符串,并进行替换。如输入源字符串“We love math!”, 查找目标字符串“math”,并将其替换为字符串“C Program”,在主函数中输出替换后的字符串“We love C Program!”. 【问题分析】 在源字符串中查找目标字符串,可以定义一个指针变量指向字符串中的某个字符,从该指针指向 的字符开始,与目标字符串的字符逐个进行比较,若相同则继续比较下一个字符,若不相同则退出 比较,该指针指向下一字符,继续从该字符开始与目标字符串逐个进行比较;若比较到目标字符串 的结束标志,说明在源字符串中已经找到目标字符串,此时用替换字符串取代目标字符串即可。 【算法设计】 (1)从键盘输入源字符串; (2)从键盘输入目标字符串和替换的字符串; (3)调用函数实现查找源字符串中的目标字符串,并进行替换; (4)输出完成查找和替换后的字符串。 【关键代码】 由于在源字符串中查找目标字符串并替换的功能在自定义函数中实现,因此函数的形式参数需有 三个:一个为源字符串,一个为目标字符串,还有一个为替换的字符串。函数的返回值为完成查找 和替换操作后的字符串。若字符串中没有查找到目标字符串,则返回“No Found!”字符串。因此 函数的首部可以为: char *replace(char *source,char *target,char *string) 其中 source 为字符型的指针变量,存放源字符串的首地址;target 存放目标字符串的首地址; string 用于存放替换后的字符串的首地址,该函数返回的是一个字符型的指针。
时间: 2023-08-20 07:03:55 浏览: 97
以下是实现以上功能的代码:
```c
#include <stdio.h>
#include <string.h>
char *replace(char *source, char *target, char *string) {
char *start = source; // 定义指针变量指向源字符串的起始位置
char *p = strstr(source, target); // 在源字符串中查找目标字符串
if (p == NULL) { // 如果没有找到目标字符串,则返回"No Found!"字符串
return "No Found!";
}
char *result = (char *)malloc(strlen(source) - strlen(target) + strlen(string) + 1); // 计算替换后的字符串长度
strncpy(result, start, p - start); // 将源字符串中目标字符串之前的部分复制到结果字符串中
strcat(result, string); // 将替换的字符串复制到结果字符串中
strcat(result, p + strlen(target)); // 将源字符串中目标字符串之后的部分复制到结果字符串中
return result;
}
int main() {
char source[100], target[20], string[20];
printf("Please input the source string: ");
gets(source);
printf("Please input the target string: ");
gets(target);
printf("Please input the string to replace: ");
gets(string);
printf("Before replacement: %s\n", source);
char *result = replace(source, target, string);
printf("After replacement: %s\n", result);
free(result); // 释放内存
return 0;
}
```
运行结果:
```
Please input the source string: We love math!
Please input the target string: math
Please input the string to replace: C Program
Before replacement: We love math!
After replacement: We love C Program!
```
阅读全文