const char* findStr(const char* src, const char* sub)
{
const char* bp;
const char* sp;
if (src == NULL || sub == NULL) return NULL;
while (*src != '\0') //遍历src字符串
{
bp = src; //用于src的遍历
sp = sub; //用于sub的遍历
do
{
if (!*sp) //如果到了sub字符串结束符位置
return src; //表示找到了sub字符串,退出
} while (*bp++ == *sp++);
src += 1;
}
return NULL;
}
//将str字符串中的sub1字符串替换成sub2
char *replace(const char* str, const char* sub1, const char* sub2, char* output)
{
char* pOutput = NULL;
const char* pStr = NULL;
int lenSub1 = strlen(sub1); //子串sub1的长度
int lenSub2 = strlen(sub2); //子串sub2的长度
pOutput = output;
pStr = str; //用于寻找子串
while (*pStr != 0)
{
pStr = findStr(pStr, sub1); //在str中寻找sub1子串
if (NULL != pStr) //找到sub1子串
{
memcpy(pOutput, str, pStr - str); //复制str的前一部分output
pOutput += pStr - str;
memcpy(pOutput, sub2, lenSub2); //复制sub2子串到output
pOutput += lenSub2;
pStr += lenSub1;
str = pStr;
}
else //找不到子串sub1子串
{
break;
}
}
*pOutput = '\0';
if (*str != '\0')
{
strcpy(pOutput, str);
}
return output;
}
int main()
{
const char str[] = "abcdefgbc";
const char str1[] = "bc";
const char str2[] = "123";
char buffer[100];
cout << replace(str, str1, str2, buffer) << endl;
system("pause");
return 0;
}
C Programming replacement string
Guess you like
Origin blog.csdn.net/lpl312905509/article/details/104088730
Recommended
Ranking