【简单c++整形数组的合并,利用strcat运行出来没结果为啥?】

#include
#include <string.h>
using namespace std;
int main()
{
int m=4, n=3;
int s[7], e[4] = { 1,2,3,5 }, a[3] = {4,7,9};
strcpy((char*)s[m + n], strcat((char*)e[m], (char*)a[n]));
for (int i = 0; i < m + n; i++)
{
for (int j = 0; j < m + n - i - 1; j++)
{
if (s[j] > s[j + 1])
{
int t;
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
}
}
}
int k;
for (k = 0; k < m + n; k++)
{
cout << s[k] << " " << endl;
}

}

strcat((char*)e[m], (char*)a[n]));
e[m]没问题,a[n]肯定不对,应该是a
而且你这是整型数组,不是字符串,字符串是会自动找到内存中第一个字符串终止符才算结束的,所以strcat,strcpy函数都不能使用的

可以自己写个整型数组连接或复制类似字串复制连接的函数。
仅供参考!谢谢!

C语言的,自己可以改回C++的。

img

#include<stdio.h>
#include<string.h>
//using namespace std;

//整型数组复制
void intcpy(int *dst,size_t len1,int *from,size_t len2)
{
    if(len1<len2)
    {
        fprintf(stdout,"空间不足无法复制!\n");
        return;
    }
    int i=0,j=0;
    while(i<len1 && j<len2)
        dst[i++]=from[j++];        
}

//整型数组连接
//n1是dst数组原有数据个数,len1是dst数组的总容量
void intcat(int *dst,size_t n1,size_t len1,int *from,size_t len2)
{
    if(len1-n1<len2)
    {
        fprintf(stdout,"空间不足无法连接!\n");
        return;
    }
    int i=n1,j=0;
    while(i<len1 && j<len2)
        dst[i++]=from[j++];        
}
    
    
int main()
{
    int m = 4, n = 3;
    int s[7], e[4] = { 1, 2, 3, 5 }, a[3] =
    {4, 7, 9};
    //strcpy((char *)s[m + n], strcat((char *)e[m], (char *)a[n]));
    intcpy(s,7,e,4);
    intcat(s,4,7,a,3);

    for (int i = 0; i < m + n; i++)
    {
        for (int j = 0; j < m + n - i - 1; j++)
        {
            if (s[j] > s[j + 1])
            {
                int t;
                t = s[j];
                s[j] = s[j + 1];
                s[j + 1] = t;
            }
        }
    }
    int k;
    for (k = 0; k < m + n; k++)
    {
        //cout << s[k] << " " << endl;
        printf("%d",s[k]);
    }

}