在C程序中将2个数组复制到1个数组中

时间:2014-11-03 12:20:30

标签: c arrays string multidimensional-array

如何将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]);
}

3 个答案:

答案 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]);
    }