【发布时间】:2014-06-09 01:10:09
【问题描述】:
我用 C 语言创建了一个程序,它使用 strstr、strncpy 和 sprintf 函数将所有子字符串替换为替换字符串。我的程序的唯一缺陷是,当您要替换例如搜索“The”并想用“There”替换它,这会导致无限循环,因为程序一直在寻找它刚刚替换的内容。我怎样才能在 C 中解决这个问题,或者是否有另一种方法可以在 C 中实现这样的功能?谢谢。
替换函数:(多次调用,直到找不到任何匹配项)。
char *searchAndReplace(char *text, char *search, char *replace){
char buffer[MAX_L];
char *ptr;
char *modText = malloc(4096);
if(!(ptr = strstr(text, search))){
return;
}
strncpy(buffer, text, ptr-text);
sprintf(buffer+(ptr-text), "%s%s", replace, ptr + strlen(search));
strcpy(text, buffer);
【问题讨论】:
-
请发布您的代码的代表性示例。
-
在 last 替换文本的尾部开始搜索 next 替换。即“TheQuestion”将“The”替换为“There”,然后开始在“ThereQuestion”的“Q”处搜索下一个“The”。
-
@WhozCraig 我究竟如何让它从那里开始,这就是我卡住的地方我无法弄清楚如何确定那个位置。
-
@Nassim,你在重复调用你的函数吗?
-
@merlin2011,是的,它反复调用,直到没有更多匹配项。