内存中字符串替换函数
时间: 2023-11-12 19:08:26 浏览: 126
字符串子串替换函数
下面是一个简单的内存中字符串替换函数的示例:
```c
#include <stdio.h>
#include <string.h>
void replace(char *str, char *orig, char *rep)
{
char buffer[4096];
char *p;
if (!(p = strstr(str, orig))) // 找到第一个匹配的字符串 orig
return;
strncpy(buffer, str, p-str); // 将第一个匹配的字符串之前的部分复制到 buffer 中
buffer[p-str] = '\0';
sprintf(buffer+(p-str), "%s%s", rep, p+strlen(orig)); // 将 rep 和第一个匹配的字符串之后的部分拼接到 buffer 中
strcpy(str, buffer); // 将 buffer 中的内容复制回原始字符串 str 中
replace(str, orig, rep); // 递归调用函数,继续寻找下一个匹配的字符串
}
int main()
{
char str[] = "Hello, world! This is a test string.";
char orig[] = "test";
char rep[] = "replacement";
printf("Original string: %s\n", str);
replace(str, orig, rep);
printf("Replaced string: %s\n", str);
return 0;
}
```
这个函数使用了递归来替换字符串中的所有匹配项。如果在字符串中找到了一个匹配项,它会用新的字符串替换原始字符串中的这个匹配项,并继续寻找下一个匹配项,直到没有匹配项为止。
阅读全文