求解一个关于指针的有关问题,请各位大侠不吝赐教

求解一个关于指针的问题,请各位大侠不吝赐教!
[color=#00FF00][color=#00FF00]

今天本人写了一个字符串处理函数,从原字符串中找到某些符合要求的子字符串  然后有个特定的字符串替换该子字符串。所有的功能模块运行良好 但是 在 void replace(int& i,int& len,int& len1,int& len2);这个函数中 遇到了一个问题 始终没解决,就是replace函数处理字符串之前传递进去的字符串居然输出是乱码 不知道是怎么回事 我在程序相应的地方已经标注 求大侠指教!
我输入的是:strSrc = abcabc     strFind = a   strReplace  = bh
#include <stdio.h>
#include <stdlib.h>
//函数声明
 void menu(void);
 void StrReplace(void);
 void get_len(int& len,int& len1,int& len2);
 void replace(int& i,int& len,int& len1,int& len2);

 char* strSrc;//三个待处理的字符串
 char* strFind;
 char* strReplace;

//主函数
int main(void)
{
 //先申请空间
 strSrc = (char*)malloc(sizeof(char));
 strFind = (char*)malloc(sizeof(char));
 strReplace = (char*)malloc(sizeof(char));
 //输入函数
 menu();
 //替换函数
 StrReplace();
 return 0;

}

void menu(void)
{
 printf("请输入原字符串:");//在标准输入流中的表现空格和字符串的结尾相同
 scanf("%s",strSrc);
 printf("您输入的字符串是:%s\n",strSrc);

 printf("请输入查找子字符串:");
 scanf("%s",strFind);
 printf("您输入的字符串是:%s\n",strFind);

 printf("请输入替换字符串:");
 scanf("%s",strReplace);
 printf("您输入的字符串是:%s\n",strReplace);
}

void StrReplace(void)
{
   //三个字符串的长度
int len=0;
int len1=0;
int len2=0;
int count=0;//计数
int count1=0;
//得到长度
get_len(len,len1,len2);
printf("三个长度:%d  %d  %d\n",len,len1,len2);
    //先判断长度
if(len<len1)
{
 printf("数据错误!\n");
 return;
}
if(len1==len2)
{
 for(int m=0;m<len1;m++)
 {
  if(*(strFind+m) != *(strReplace+m))
  break;
  else count++;  
 }
if(count == len1)
{
 printf("输入的字串相同\n");
 return;
}
}
   count=0;
    //寻找符合要求的字串
for(int i=0;i<len;i++)
{
if(*strFind == *(strSrc+i))//向后遍历比较
{

                   if((i+len1)>len)
 break;

 for(int j=i;j<i+len1;j++)