我如何将2个单独的2D数组复制到1个数组中,我在下面描述了我的意思:
我有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]);
}
由于最右边的数组尺寸相等,因此将两个数组合二为一的最简单方法是
#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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句