2013-04-04 131 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(); 
    }