字符串插入有关问题

字符串插入问题
怎样实现
char *p = "hello world!";
"hello world!"在文字常量区,不能直接修改
要求
在堆区操作
将no插入ll之间
写一个新的函数完成功能
函数原型void myCopy();//只能有两个形式参数

int main(void)
{
  char *p = "hello world!";
  char *tp = "no";

  myCopy( ...,... );

  printf("%s",p);
  return 0;
}//大牛们帮帮忙吧,谢谢


------解决方案--------------------
C/C++ code
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * myCopy(char * source, const char *str, const char pos)
{
    int i= 0;
    int flag = 0;
    int len = strlen(str);
    int j = 0;
    int k = 0;
    char * temp = (char *)malloc(strlen(source) + strlen(str));
    for(i = 0; i<(int)strlen(source); i++)
    {
        temp[k] = source[i];
        if(source[i] == pos && flag == 0)
        {
            flag = 1;
            for(j = 0;j<len;j++)
            {
                temp[k + 1] = str[j];
                k++;
            }
        }
        k++;
    }
    return temp;
}

int main()
{
    char * p = "hello world";
    const char * str = "no";
    const char pos = 'l';
    printf("before insert:%s\n", p);
    printf("after insert:%s\n", myCopy(p, str, pos));
    exit(EXIT_SUCCESS);
}