小编Nas*_*sim的帖子

当子字符串与替换字符串相似时如何替换C中的子字符串?

我创建了一个在C程序,使用strstrstrncpysprintf功能用替换字符串替换所有子。我的程序的唯一缺陷是,当您要替换例如搜索“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);
Run Code Online (Sandbox Code Playgroud)

c string substring

2
推荐指数
1
解决办法
718
查看次数

标签 统计

c ×1

string ×1

substring ×1