gpt4 book ai didi

c - C 中字符串替换多次出现

转载 作者:行者123 更新时间:2023-11-30 21:21:41 25 4
gpt4 key购买 nike

我在网上找到的大多数模块都会替换该字符串的第一次出现。但我想要一个模块来搜索每个出现的地方并替换该字符串。我在堆栈溢出中发现了一段非常乏味的代码,所以我没有研究它。而我工作的环境,只支持C编译器。所以 C++ 命令调整评论不受欢迎。这是我目前为止的情况。它仍然会给我带来错误。如有任何帮助,我们将不胜感激。

#include <stdio.h>
#include <string.h>
char *replace_str(char *str, char *orig, char *rep)
{
char *buffer;
char *p, *work;

while(strstr(str,orig))
{
p = strstr(str, orig);

strncpy(work, str, p-str);
strcat(buffer, work);
//strncpy(buffer+strlen(buffer), str, p-str);
strcat(buffer, rep);
p+=strlen(orig);
str = p;
}
return strcat(buffer,p);
}
int main(void)
{
puts(replace_str("Hello, Kate! I once had a cat named Kate! ", "Kate", "Paul"));
return 0;
}

最佳答案

您的代码会产生未定义的行为,因为您尝试在 bufferwork 之间进行复制,而不为它们分配内存。使用 malloc 并且不要忘记再次正确地释放所有内容。

如果替换被限制为与要替换的字符串长度相同,那么您根本不需要缓冲区。否则,您必须确保稍后在调用部分释放返回的字符串。

关于c - C 中字符串替换多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21344006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com