2014-11-03 81 views
-1

我怎样才能复制2个独立的二维数组成1个阵列,我已经如下所述我的意思:拷贝2个数组到1个阵列,在C PROG

我有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

那你试试,当涉及到实际的复制? – Lundin 2014-11-03 12:21:36

+0

您在哪里初始化您的arr3或将项目复制到arr3? – Gopi 2014-11-03 12:24:57

+0

你有没有试过功能strcat? – Module 2014-11-03 12:25:04

回答

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 
+0

使用你有第一个代码,如果我得到空行,空白行的值间隔了.....我怎样才能解决这个问题通过删除空白行 – Quest 2014-11-03 13:55:49

+0

@Quest在这种情况下,你应该使用第二种方法是通过strcpy单独复制每行。 – 2014-11-03 14:16:03

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]; 
} 
0

从人的评论似乎它的工作原理是这样的。 问题:有没有一种方法,我不需要指定“i + 3”,即可以将两个数组附加在一起?所以它直接在另一个后打印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]); 
    }