#include <iostream> #include <cstring> using namespace std; char *ReplaceString(char *str, char *s1, char *s2); int main() { char str[100], s1[10], s2[10]; cin >> str >> s1 >> s2; char *result = ReplaceString(str, s1, s2); cout << result << endl; return 0 ; } char *ReplaceString(char *str, char *s1, char *s2) { /********* Begin *********/ char *a,*b,*c; a=str; b=s1; c=s2; while(*str) { } /********* End *********/ }接下来怎么编写
时间: 2023-07-05 09:26:31 浏览: 75
char *ReplaceString(char *str, char *s1, char *s2) {
char *result = new char[strlen(str) + 1]; // 分配新的字符串空间
int s1Len = strlen(s1);
int s2Len = strlen(s2);
int i = 0;
while (*str) {
if (strncmp(str, s1, s1Len) == 0) { // 如果找到了s1
strncpy(result + i, s2, s2Len); // 将s2复制到新字符串中
i += s2Len; // 更新新字符串的下标
str += s1Len; // 更新原字符串的下标
} else { // 如果没找到s1
result[i++] = *str++; // 直接复制原字符串中的字符到新字符串中
}
}
result[i] = '\0'; // 在新字符串末尾添加'\0',表示字符串结束
return result;
}
在这个函数中,我们首先分配了新的字符串空间,然后逐个字符地遍历原字符串。如果找到了s1,就将s2复制到新字符串中,否则就直接复制原字符串中的字符到新字符串中。最后,在新字符串末尾添加'\0',表示字符串结束。最后,返回新字符串的指针。需要注意的是,我们在函数内部分配了新的字符串空间,因此在使用完毕后,需要手动释放该空间,以免造成内存泄漏。
阅读全文