编写一个两数实现从源字符串中查找目标字符串,并进行替换。如输入源字符串“Welovemath!” 查找目标字符串“math",并将其替换为字符串“CProgram”,在主两数中输出替换后的字符串“We loveCProgram!”. 【问题分析】 在源字符串中查找目标字符串,可以定义一个指针变量指向字符串中的某个字符,从该指针指向 的字符开始,与日标字符串的字符逐个进行比较,若相同则继续比较下一个字符,若不相同则退出 比较,该指针指向下一字符,继续从该字符开始与目标字符串逐个进行比较:若比较到目标字符串 的结束标志,说明在源字符串中已经找到目标字符串,此时用替换字符串取代目标字符串即可。 【算法设计】 (1)从键盘输入源字符串: (2)从键盘输入目标字符串和替换的字符串; (3)调用两数实现查找源字符串中的目标宇符串,并进行替换: (④)输出完成查找和替換后的字符串。 【关键代码】 由于在源字符串中查找目标字符串并替换的功能在自定义西数中实现,因此函数的形式参数需有 三个:一个为源字符串,一个为目标字符串,还有一个为替换的字符串。函数的返回值为完成查找 和替换操作后的字符串。若字符串中没有查找到目标字待串,则返回“NoFound!〞字符串。因此 函数的首部可以为: char*replace(char*source.char*target.char*string) 其中source为字符型的指针变量,存放源字符串的首地址:target存放目标字符串的首地址: string用于存放替换后的字符串的首地址,该西数返回的是一个字符型的指针。
时间: 2023-08-20 17:04:02 浏览: 69
C#中怎样从指定字符串中查找并替换字符串?
以下是实现上述功能的代码:
```c
#include <stdio.h>
#include <string.h>
char *replace(char *source, char *target, char *string);
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;
}
char *replace(char *source, char *target, char *string) {
char *result, *p;
int len = strlen(target); // 目标字符串的长度
if ((p = strstr(source, target)) == NULL) { // 在源字符串中查找目标字符串
return "NoFound!";
}
result = (char *) malloc(strlen(source) - len + strlen(string) + 1); // 分配内存
if (result == NULL) {
printf("内存分配失败!");
return NULL;
}
strncpy(result, source, p - source); // 拷贝源字符串中目标字符串前面的部分
result[p - source] = '\0';
sprintf(result + (p - source), "%s%s", string, p + len); // 拼接替换后的字符串
return result;
}
```
代码中的`replace`函数实现了在源字符串中查找目标字符串并进行替换的功能。首先使用`strstr`函数在源字符串中查找目标字符串,如果没有找到则返回"NoFound!"字符串。如果找到了目标字符串,则根据目标字符串的位置和长度来分配内存,并使用`strncpy`函数将源字符串中目标字符串前面的部分拷贝到结果字符串中。然后使用`sprintf`函数将替换后的字符串拼接到结果字符串中,并返回结果字符串的首地址。
在主函数中,首先从键盘输入源字符串、目标字符串和替换字符串,然后调用`replace`函数完成替换操作,并输出替换后的字符串。
阅读全文