本关任务:编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。 题目中已经给出main函数,main函数会调用ReplaceString函数进行测试,依次输入字符串str、s1和s2,最后输出替换后字符串。
时间: 2024-03-17 09:39:40 浏览: 39
JAVA string函数总结.docx
以下是函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *ReplaceString(char *str, char *s1, char *s2) {
char *result; // 存放替换后的字符串
char *p; // 指向str中s1第一次出现的位置
char *temp; // 临时指针变量
int len1 = strlen(s1); // s1的长度
int len2 = strlen(s2); // s2的长度
int count = 0; // 统计s1出现的次数
// 统计s1出现的次数
p = str;
while ((p = strstr(p, s1)) != NULL) {
count++;
p += len1;
}
// 分配空间
result = (char *)malloc(strlen(str) + count * (len2 - len1) + 1);
if (result == NULL) {
printf("Error: Out of memory\n");
return NULL;
}
// 替换
p = str;
temp = result;
while (*p != '\0') {
if (strncmp(p, s1, len1) == 0) {
strncpy(temp, s2, len2);
p += len1;
temp += len2;
} else {
*temp++ = *p++;
}
}
*temp = '\0';
return result;
}
int main() {
char str[100], s1[20], s2[20];
printf("请输入字符串:");
scanf("%s", str);
printf("请输入要替换的字符串:");
scanf("%s", s1);
printf("请输入替换成的字符串:");
scanf("%s", s2);
char *result = ReplaceString(str, s1, s2);
printf("替换后的字符串为:%s\n", result);
free(result);
return 0;
}
```
函数思路:
1. 首先统计s1在str中出现的次数,用以计算替换后的字符串长度。
2. 分配空间,存放替换后的字符串。
3. 遍历str,如果当前位置是s1,则用s2替换;否则将当前字符复制到替换后的字符串。
4. 返回替换后的字符串的指针。
阅读全文