数据结构中写一个算法 void strpelace(String *t,String p,String s) 将串t中首次出现的子串p替换为串s,用C语言编写。
时间: 2024-10-15 15:22:11 浏览: 23
在C语言中,你可以通过遍历字符串和使用字符串函数来实现这个功能。以下是一个简单的`strpelace`函数,它会找到第一个出现的子串`p`并替换为`s`:
```c
#include <stdio.h>
#include <string.h>
void strpelace(char* t, char* p, char* s) {
int t_len = strlen(t);
int p_len = strlen(p);
int s_len = strlen(s);
// 遍历整个字符串t
for (int i = 0; i <= t_len - p_len; i++) {
// 检查子串是否匹配
if (strncmp(t + i, p, p_len) == 0) { // 使用strncmp避免缓冲区溢出
// 如果匹配,将子串替换成s
memmove(t + i + s_len, t + i + p_len, t_len - i - p_len); // 移动剩余部分到新位置
memcpy(t + i, s, s_len); // 复制s到原位置
break; // 找到后直接结束循环
}
}
}
int main() {
char t[] = "Hello, world!";
char p[] = "world";
char s[] = "CSDN";
strpelace(t, p, s);
printf("Modified string: %s\n", t);
return 0;
}
```
在这个例子中,我们假设输入的字符串`t`、`p`和`s`都是有效的,并且`p`存在于`t`中。如果`t`中不存在`p`,或者`p`和`s`的长度不合适导致无法正常替换,需要添加额外的错误处理。
阅读全文