#include "stdafx.h"
#include "testdata.h"
wchar_t* mystrcat(const wchar_t *str1,const wchar_t *str2,const wchar_t *str3)//str1是原来的字符串,str2是str1中的某段需要替换字符串,str3是替换str2的字符串
{
int strlen1=0,strlen2=0,strlen3=0;
strlen1 = wcslen(str1);
strlen2 = wcslen(str2);
strlen3 = wcslen(str3);
int num=0,num1=0,num2=0,num3=0;//num1从str1起。。。
int m = 0;//替代num1的值
int count = 0;//记录有几个像str2的字符串
int len = 2*(count*(strlen3-strlen2)+strlen1+1);*/
int len = (strlen1*strlen3/strlen2+1)*2;
wchar_t *p_str = (wchar_t*)malloc(len);
wchar_t *str = p_str;
for(num1=0;num1<strlen1;num1++)
{
m = num1;
num2 = 0;
while(num2<strlen2)
{
if(str1[m]!= str2[num2])
break;
m++;
num2++;
}
if(num2>=strlen2)
{
for(num3=0;num3<strlen3;num3++)
str[num++] = str3[num3];
num1+=(strlen2-1);
count++;
}
else
str[num++] = str1[num1];
}
len = 2*(count*(strlen3-strlen2)+strlen1+1);
str[len/2-1] = L'\0';
return p_str;
}
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t buffer[300000]={0};
wchar_t *pstr;
DWORD localtime=GetTickCount();
for(int i=0;i<100;i++)
{
memcpy(buffer,textdata,sizeof(textdata));
pstr = mystrcat(buffer,L"is clean",L"is not clean");
free(pstr);
pstr = NULL;//system("pause");
}
localtime=GetTickCount()-localtime;
printf("本次替换时间为%dms\r\n",localtime);
system("pause");
return 0;
}
#include "testdata.h"
wchar_t* mystrcat(const wchar_t *str1,const wchar_t *str2,const wchar_t *str3)//str1是原来的字符串,str2是str1中的某段需要替换字符串,str3是替换str2的字符串
{
int strlen1=0,strlen2=0,strlen3=0;
strlen1 = wcslen(str1);
strlen2 = wcslen(str2);
strlen3 = wcslen(str3);
int num=0,num1=0,num2=0,num3=0;//num1从str1起。。。
int m = 0;//替代num1的值
int count = 0;//记录有几个像str2的字符串
int len = 2*(count*(strlen3-strlen2)+strlen1+1);*/
int len = (strlen1*strlen3/strlen2+1)*2;
wchar_t *p_str = (wchar_t*)malloc(len);
wchar_t *str = p_str;
for(num1=0;num1<strlen1;num1++)
{
m = num1;
num2 = 0;
while(num2<strlen2)
{
if(str1[m]!= str2[num2])
break;
m++;
num2++;
}
if(num2>=strlen2)
{
for(num3=0;num3<strlen3;num3++)
str[num++] = str3[num3];
num1+=(strlen2-1);
count++;
}
else
str[num++] = str1[num1];
}
len = 2*(count*(strlen3-strlen2)+strlen1+1);
str[len/2-1] = L'\0';
return p_str;
}
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t buffer[300000]={0};
wchar_t *pstr;
DWORD localtime=GetTickCount();
for(int i=0;i<100;i++)
{
memcpy(buffer,textdata,sizeof(textdata));
pstr = mystrcat(buffer,L"is clean",L"is not clean");
free(pstr);
pstr = NULL;//system("pause");
}
localtime=GetTickCount()-localtime;
printf("本次替换时间为%dms\r\n",localtime);
system("pause");
return 0;
}