啊实打实的撒大苏打的

#include<stdio.h>
#include <malloc.h>
#include <string.h>
char* fstr(char* str, const char* subs)
{
	char* t = (char*)malloc(strlen(subs) + 1);
	char* ps = str;
	int i;
	int slen = strlen(subs);
	*(t + slen) = 0;
	while (strlen(ps) >= slen)
	{
		for (i = 0; i < slen; ++i)
		{
			*(t + i) = *(ps + i);
		}
		if (strcmp(t, subs) == 0)
		{
			free(t);
			return ps;
		}
		++ps;
	}
	free(t);
	return NULL;
}
char *replace(char *str, const char *before, const char* after)
{
	if (strcmp(before, after) == 0)
		return str;
	char *ps = str;
	char* tmps;
	int fl,i;
	while (ps = fstr(ps, before))
	{
		tmps = (char*)malloc(ps - str + strlen(after) + 1);		
		for (i = 0; i < ps - str; ++i)		
			*(tmps + i) = *(str + i);		
		*(tmps + (ps - str)) = 0;
		strcat(tmps, after);
		ps += strlen(before);
		tmps = (char*)realloc(tmps, strlen(tmps) + strlen(ps) + 1);
		fl = strlen(tmps);
		strcat(tmps, ps);
		strcpy(str, tmps);
		ps = str + fl;
		free(tmps);
	}
	return str;
}
int main()
{
	char str[200] = "1223344222333444";
	printf("%s\n", replace(str, "22", "ABC"));
	return 0;
}