#include <stdio.h>
#include <string.h>
char* Replace(char *str,char *substr,char* newstr)
{
int i,j,k,m,n;
for(i = 0;i < strlen(str);i++)
{
k = i;
for(j = 0;j < strlen(substr);j++)
{
if(str[k] != substr[j])
{
break;
}
else
k++;
}
if(j == strlen(substr))
{
m = i;
for(n = 0;n < int(strlen(newstr));m++,n++)
{
printf("%d",n);
str[m] = char(newstr[n]);
continue;
}
}
}
return str;
}
void main()
{
char* a = "123ac123ac";
char* sub = "ac";
char* news = "45";
Replace(a,sub,news);
printf("%s",a);
}
正确方法
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
char* ReplaceSubStr(const char* str, const char* srcSubStr, const char* dstSubStr, char* out)
{
char *p;
char *_out = out;
const char *_str = str;
const char *_src = srcSubStr;
const char *_dst = dstSubStr;
int src_size = strlen(_src);
int dst_size = strlen(_dst);
int len = 0;
do
{
p = strstr(_str, _src);
if(p == 0)
{
strcpy(_out, _str);
return out;
}
len = p - _str;
memcpy(_out, _str, len);
memcpy(_out + len, _dst, dst_size);
_str = p + src_size;
_out = _out + len + dst_size;
} while(p);
return out;
}
void main()
{
char str[1024];
char srcSubStr[1024];
char dstSubStr[1024];
char out[1024];
scanf("%s",&str);
scanf("%s",&srcSubStr);
scanf("%s",&dstSubStr);
ReplaceSubStr(str, srcSubStr, dstSubStr, out);
printf("%s\n", out);
}