如何将2个单独的2D数组复制到1个数组中,我在下面描述了我的意思:
我有一个数组:a,b,c 我有第二个数组:d,e,f
我希望第三个数组同时具有上述数组: 第三个数组:a,b,c,d,e,f
到目前为止,我的代码只是获取两个数组的值,并在打印第三个数组时注释掉了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int i,j,count;
char ar1[3][10]={"a","b","c"};
char ar2[3][10]={"d","e","f"};
char ar3[6][10];
for (i=0;i<3;i++){
printf("%s\n",ar1[i]);
}
for (i=0;i<3;i++){
printf("%s\n",ar2[i]);
}
printf('new array:\n');
// for (i=0;i<6;i++)
// printf("%s\t\n",ar3[i]);
}
答案 0 :(得分:1)
由于数组的最右侧维度相同,因此将两个数组复制为一个的最简单方法如下
#include <stdio.h>
#include <string.h>
int main(void)
{
char ar1[3][10] = { "a", "b", "c" };
char ar2[3][10] = { "d", "e", "f" };
char ar3[6][10];
memcpy( ar3, ar1, sizeof( ar1 ) );
memcpy( ar3 + 3, ar2, sizeof( ar2 ) );
for ( size_t i = 0; i < 6; i++ )
{
puts( ar3[i] );
}
return 0;
}
输出
a
b
c
d
e
f
另一种方法是使用函数strcpy
#include <stdio.h>
#include <string.h>
int main(void)
{
char ar1[3][10] = { "a", "b", "c" };
char ar2[3][10] = { "d", "e", "f" };
char ar3[6][10];
size_t j = 0;
for ( size_t i = 0; i < 3; i++, j++ )
{
strcpy( ar3[j], ar1[i] );
}
for ( size_t i = 0; i < 3; i++, j++ )
{
strcpy( ar3[j], ar2[i] );
}
for ( size_t i = 0; i < 6; i++ )
{
puts( ar3[i] );
}
return 0;
}
输出与上面相同
a
b
c
d
e
f
答案 1 :(得分:0)
不会像
那样for (i=0;i<3;i++){
ar3[i][0] = ar1[i][0];
}
for (i=0;i<3;i++){
ar3[i+3][0] = ar2[i][0];
}
答案 2 :(得分:0)
从人们的评论来看,它似乎是这样的。 问题:有没有办法我不必指定“i + 3”,即我可以将2个数组加在一起吗?所以它直接打印1个接一个。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j,count;
char ar1[3][10]={"a","b","c"};
char ar2[3][10]={"d","e","f"};
char ar3[6][10];
for (i=0;i<3;i++){
printf("%s\n",ar1[i]);
strcpy(ar3[i],ar1[i]);
}
for (i=0;i<3;i++){
printf("%s\n",ar2[i]);
strcpy(ar3[i+3],ar2[i]);
}
// printf('new array:\n');
for (i=0;i<6;i++)
printf("%s\t\n",ar3[i]);
}