2014-11-03 38 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]); 
    }