输入结果是bei123jing,在三号位置添加,这个程序哪里有问题,怎么改

#include<stdio.h>;
#include<string.h>;
#include<stdlib.h>;
#pragma warning (disable:4996);
char*my_str(char*p, char*q,const int n)
{;
    int x= strlen(p);
    int y= strlen(q);
    printf("%d\n", x);
    printf("%d\n", y);
    char*f = { NULL };
    for (int i = 0; i < 3; i++)
    {
        *(f + i) = *(p + i);
    }
    for (int i = 0; i < 3; i++)
    {
        *(f + i + 3) = *(q + i);
    }
    for (int i = 3; i < 7; i++)
    {
        *(f + 3 + i) = *(p + i);
    }
    strcat(f, p);
    *(f + x + y) = 0; 
    return f;
}
int main()
{
    char a[] = "Beijing";
    char b[] = "123";
    char f[] = "";
    int n = 3;
    char*f=my_str( a, b, n);
    printf("%s\n", f);
    system("pause");
    return 0;
 

代码修改如下,如有帮助,请采纳一下,谢谢。

#include<stdio.h>;
#include<string.h>;
#include<stdlib.h>;
#pragma warning (disable:4996);
char*my_str(char*p, char*q,const int n)
{
	int x= strlen(p);
	int y= strlen(q);
	printf("%d\n", x);
	printf("%d\n", y);
	char*f = new char[x+y+1];
	f[x+y] = 0;
	for (int i = 0; i < n; i++)
	{
		*(f + i) = *(p + i);
	}
	for (int i = 0; i < y; i++)
	{
		*(f + i + n) = *(q + i);
	}
	for (int i = n; i < x; i++)
	{
		*(f + y + i) = *(p + i);
	}
	
	return f;
}
int main()
{
	char a[] = "Beijing";
	char b[] = "123";
	//char f[] = "";
	int n = 3;
	char*f = my_str( a, b, n);
	printf("%s\n", f);
	system("pause");
	return 0;
}