gpt4 book ai didi

c - 如何从c中的一行文本中删除某些单词

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

我的代码在一定程度上可以正常工作,但我需要更多帮助。如果我需要从句子中删除单词“an”:“我在看着猿时吃了一个苹果。”,它只删除第一个“an”而不是第二个,我如何重复循环以便删除所有“一个”?在代码运行后,我需要最后一句话是:“我一边看猿一边吃苹果。”。这就是我想要实现的目标

抱歉,没有包含代码。这是:

#include "RemoveFromText.h"
#include <stdlib.h>
#include <string.h>

int findFirstSubstring(char textToChange[], char removeThis[])
{
int size = strlen(textToChange);
int subStringLength = strlen(removeThis);

for(int i=0; i<size; i++)
{
if(textToChange[i] == removeThis[0])
{
int j = 0;
while(textToChange[i+j] == removeThis[j])
{
j++;
if(j==subStringLength)
{
return i;
}
}
}
}
return -1;
}

void removeFromText( char textToChange[], char removeThis[])
{

int textLength = strlen(textToChange);
if(findFirstSubstring(textToChange, removeThis) >= 0)
{
int subStringIdx = findFirstSubstring(textToChange, removeThis);
int loopVariabele = 0;

for(loopVariabele = subStringIdx; loopVariabele<textLength; loopVariabele++)
{
textToChange[loopVariabele] = textToChange[loopVariabele + strlen(removeThis)];

}

}

}

最佳答案

利用“strstr”和“memmove”标准“C”库函数

// Remove all occurences of 'source' from 'message'.
void removeAll(char *message, char *source)
{
int len = strlen(source) ;
for (char *x = message ; x=strstr(x, source) ; ) {
// Copy everything after 'source', including terminating nul.
memmove(x, x+len, strlen(x+len)+1) ;
} ;
}

注释:

  1. 该解决方案无法正确解决单词后的尾随空格问题。这可以通过更改“memmove”来解决。
  2. 让函数返回替换次数或其他一些有意义的结果可能是有意义的

关于c - 如何从c中的一行文本中删除某些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172365/

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