new char 会报错怎么改

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

你是说char*f = new char[x+y+1];报错了?

恭喜你进阶到C++。

C里分配内存用 malloc,释放内存用 free。

C++ 用 new 和 delete。

 

char*f = (char*)malloc(x+y+1);