2013-04-04 130 views
-4

假設我有一個兩個D陣列。將2D陣列轉換爲單個陣列

#define ROWS 3 
#define COLS 3 

char a[ROWS][COLS]= { 
         {'1','2','3'}, 
         {'4','5','6'}, 
         {'7','8','9'} 
         }; 

如何將其值複製到單個數組。我只想要COLS值。

+2

你是什麼意思你只想要COLS值?你的意思是你想要做一個列向量化? – alrikai 2013-04-04 01:47:18

回答

1

1)如果您需要在排陣列複製明智爲了 你可以使用:

負一具有一維數組,可以容納二維數組中的所有元素,然後使用 的memcpy(new1Darr,org2Darr ,以字節爲單位的總大小);

像上述例子中, 的memcpy(new1Darray,一個,的sizeof(char)的* ROWS * COLS)

2)代替(1),或如果要更改的順序的數據必須是存儲然後只是按照你想要的方式遍歷二維數組(列專業)並逐個複製元素。贊(考慮到你先定義所有的變量)

這將新的數組中的元素複製逐列順序

k=0; 
for(j=0;j<COLS;j++) 
{ 
    for(i=0;i<ROWS;i++) 
    { 
     new1Darray[k] = a[i][j]; 
     k++; 
    } 
} 
1

它非常簡單。讓我們看看'如何?' -

#define ROWS 3 
    #define COLS 3 

    #include<stdio.h> 
    #include<conio.h> 

    char a[ROWS*COLS]={'1','2','3','4','5','6','7','8','9'}; 

    void main() 
    { 
    for(int i=0; i<ROWS*COLS;i=i+COLS) 
    { 
     for(int j=0; j<COLS; j++) 
     { 
     printf("%c\t",a[i+j]); //access array 
     } 
     printf("\n"); 
    } 
    getch(); 
    }