gpt4 book ai didi

c - findAndReplace函数的实现

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

我需要编写自己的函数实现,该函数在另一个字符串(文本)中查找字符串(word1),并用第三个字符串(word2)替换文本中word1的所有实例。这是我到目前为止所拥有的;

void findandreplace(char text[],const char word1[], const char word2[])
{
char *start;
char *end;
start=strstr(text,word1);
end=start;
if (strcmp(text,start))
{
end+=strlen(word2);
strcpy(&text[end-start+1],&text[(int)start]);
strcpy(text,word2);
findandreplace(end,word1,word2);
}
if (!strcmp(text,start))
{
end++;
findandreplace(end,word1,word2);
}
if (!text)
{
return;
}
}

我确信我在写这篇文章时犯了很多错误,但请记住我本质上是一个十足的菜鸟。任何指出错误和可能的更正的帮助将不胜感激。

最佳答案

这段代码工作正常。请注意,它假设 word1word2 的长度相同,因此这只是如何完成的想法,而不是最终解决方案。

void findandreplace(char text[], const char word1[], const char word2[])  
{
if(strlen(word1) == strlen(word2) &&
strcmp(word1, word2)) // The same lengths and words aren't equal to each other.
{
char *start;
// start=strstr(text, "good"); // We don't seek string "good",
start = strstr(text, word1); // but string word1[].
while(start != NULL)
{
strncpy(start, word2, strlen(word2));
start = strstr(text, word1);
}
}
}

引用您的代码:

  • start 指向子字符串“good”(如果存在),但您想要搜索 word1[]
  • text[(int)start] - 将指针强制转换为 int 没有任何意义。如果要获取text[]start指向的索引,则需要使用指针运算:text[start - text]
  • strcpy(text, word2) 将使 text[] 成为 word2 字符串的实际副本,您需要的是 strncpy (..)

关于c - findAndReplace函数的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37261684/

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