C 语言实现字符串替换

时间:2023-03-09 19:47:05
C 语言实现字符串替换
#include <stdio.h>
#include <string.h> typedef void VOID;
typedef char * PSTR;
typedef int INT;
typedef char STR; /***********************************************
* * StringReplace
* * 字符串替换
* *
* * pszInput 要转变的字符串
* * pszOld 要替换的子串
* * pszNew 被替换成的子串
* * pszOutput 输出的缓冲区
* * nOutputlen 输出缓冲区的长度
* *
* **********************************************/
VOID StringReplace(PSTR pszInput, PSTR pszOld, PSTR pszNew,PSTR pszOutput,INT nOutputlen)
{
INT nLen=;
STR *s, *p;
s = pszInput;
while (s != NULL)
{
p = strstr(s, pszOld); if (p == NULL )
{
memcpy(pszOutput+nLen,s,strlen(s)+nLen>nOutputlen?nOutputlen-nLen:strlen(s));
return ;
}
memcpy(pszOutput+nLen,s,p-s+nLen>nOutputlen?nOutputlen-nLen:p-s);
nLen+=p-s+nLen>nOutputlen?nOutputlen-nLen:p-s;
if(nLen>=nOutputlen)
{
return;
}
memcpy(pszOutput+nLen,pszNew,strlen(pszNew)+nLen>nOutputlen?nOutputlen-nLen:strlen(pszNew));
nLen+=strlen(pszNew)+nLen>nOutputlen?nOutputlen-nLen:strlen(pszNew);
if(nLen>=nOutputlen)
{
return;
}
s+=strlen(pszOld)+p-s;
}
return ;
}
int main(){ char str1_t[] = "";
char str2_t[] = "";
char str3_t[] = "";
char strout_t[];
StringReplace(str1_t,str2_t,str3_t,strout_t,);
printf("%s",strout_t);
return ;
}