Replace函数替换字符串

#include 
#include 

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 
#include 
#include 
#include 

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);
}

 

你可能感兴趣的:(C语言编程练习,二)