Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中将2个数组合并到空的第3个数组中_C - Fatal编程技术网

在C中将2个数组合并到空的第3个数组中

在C中将2个数组合并到空的第3个数组中,c,C,我有两个阵列: array1[] = {1,2,3,4}; array2[] = {5,6,7,8}; 我尝试将它们合并到第三个数组中: merge[] = {}; 我的脚本当前输出: 一, 2. 3. 4. 3. 4. 3. 四, 而不是: 一, 2. 3. 4. 5. 6. 7. 八, 无法找出我的循环条件的问题: #include<stdio.h> int main() { printf("\n\n"); int array1[] = {1,2,3,4}; int

我有两个阵列:

array1[] = {1,2,3,4}; 
array2[] = {5,6,7,8};
我尝试将它们合并到第三个数组中:

merge[] = {};
我的脚本当前输出:

一, 2. 3. 4. 3. 4. 3. 四,

而不是:

一, 2. 3. 4. 5. 6. 7. 八,

无法找出我的循环条件的问题:

#include<stdio.h>

int main() {

printf("\n\n");

int array1[] = {1,2,3,4};
int array2[] = {5,6,7,8};
int merge[] = {};
int n1, n2, n3, i;

//size of arrays
n1 = sizeof(array1)/sizeof(array1[0]);
n2 = sizeof(array2)/sizeof(array2[0]);
n3 = n1 + n2;

printf("The value of n1 is %d\n", n1);
printf("sum of array1 & array2 lengths is %d\n\n", n3);


for(int i = 0 ; i < n1; i++){
    merge[i] = array1[i];
    printf("%d\n", merge[i]);

};

for(int i = n1 ; i < n3; i++){
    merge[i] = array2[i-n1];
    printf("%d\n", merge[i]);
};


printf("\n\n");
return 0;
};
这很有效

原始问题中的问题-声明一个没有元素的空数组:merge[]={};
但仍然不确定为什么输出为1234

首先计算n1、n2和n3,然后使用n3创建合并数组,这样就不需要硬编码长度。我已经根据需要更新了你的代码

#include<stdio.h>

int main() {

printf("\n\n");

int array1[] = {1,2,3,4};
int array2[] = {5,6,7,8};
int n1, n2, n3, i;

//size of arrays
n1 = sizeof(array1)/sizeof(array1[0]);
n2 = sizeof(array2)/sizeof(array2[0]);
n3 = n1 + n2;
int merge[n3];

printf("The value of n1 is %d\n", n1);
printf("sum of array1 & array2 lengths is %d\n\n", n3);


for(int i = 0 ; i < n1; i++){
    merge[i] = array1[i];
    printf("%d\n", merge[i]);

};

for(int i = n1 ; i < n3; i++){
    merge[i] = array2[i-n1];
    printf("%d\n", merge[i]);
};


printf("\n\n");
return 0;
};
#包括
int main(){
printf(“\n\n”);
int-array1[]={1,2,3,4};
int array2[]={5,6,7,8};
int n1,n2,n3,i;
//阵列的大小
n1=sizeof(array1)/sizeof(array1[0]);
n2=sizeof(array2)/sizeof(array2[0]);
n3=n1+n2;
int合并[n3];
printf(“n1的值是%d\n”,n1);
printf(“阵列1和阵列2的长度之和为%d\n\n”,n3);
对于(int i=0;i

我希望这是您所期望的。

首先计算n1、n2和n3,然后使用n3创建合并数组,这样就不需要硬编码长度。我已经根据需要更新了你的代码

#include<stdio.h>

int main() {

printf("\n\n");

int array1[] = {1,2,3,4};
int array2[] = {5,6,7,8};
int n1, n2, n3, i;

//size of arrays
n1 = sizeof(array1)/sizeof(array1[0]);
n2 = sizeof(array2)/sizeof(array2[0]);
n3 = n1 + n2;
int merge[n3];

printf("The value of n1 is %d\n", n1);
printf("sum of array1 & array2 lengths is %d\n\n", n3);


for(int i = 0 ; i < n1; i++){
    merge[i] = array1[i];
    printf("%d\n", merge[i]);

};

for(int i = n1 ; i < n3; i++){
    merge[i] = array2[i-n1];
    printf("%d\n", merge[i]);
};


printf("\n\n");
return 0;
};
#包括
int main(){
printf(“\n\n”);
int-array1[]={1,2,3,4};
int array2[]={5,6,7,8};
int n1,n2,n3,i;
//阵列的大小
n1=sizeof(array1)/sizeof(array1[0]);
n2=sizeof(array2)/sizeof(array2[0]);
n3=n1+n2;
int合并[n3];
printf(“n1的值是%d\n”,n1);
printf(“阵列1和阵列2的长度之和为%d\n\n”,n3);
对于(int i=0;i

我希望这是您所期望的。

merge
s大小为0。您不需要大小为
0
的数组。阵列不会为您调整自身大小事实上这取决于您的操作系统、您的体系结构等。。。在我的操作系统中,n3等于8,并且合并顺序正确(1、2、3、4、5、6、7、8)。由于访问
merge
中不存在的元素,您的代码具有未定义的行为。将
merge
的定义从具有零元素的
int merge[]={}
更改为
int merge[sizeof(array1)/sizeof(array1[0])+sizeof(array2)/sizeof(array2[0])
或(如果在初始化
n1
n2
n3
)将其定义为
int merge[n3]
merge
s大小为0。您不需要大小为
0
的数组。阵列不会为您调整自身大小事实上这取决于您的操作系统、您的体系结构等。。。在我的操作系统中,n3等于8,并且合并顺序正确(1、2、3、4、5、6、7、8)。由于访问
merge
中不存在的元素,您的代码具有未定义的行为。将
merge
的定义从具有零元素的
int merge[]={}
更改为
int merge[sizeof(array1)/sizeof(array1[0])+sizeof(array2)/sizeof(array2[0])
或(如果在初始化
n1
n2
n3
)将其定义为
int merge[n3]