将2D数组转换为单个数组

时间:2013-04-04 01:07:08

标签: c arrays

假设我有一个双D阵列。

#define ROWS 3
#define COLS 3

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

如何将其值复制到单个数组中。我只想要COLS值。

2 个答案:

答案 0 :(得分:1)

1)如果需要按行顺序复制数组 你可以使用:

-first有一个1D数组,可以容纳2D数组的所有元素,然后使用     memcpy(new1Darr,org2Darr,总大小,以字节为单位);

就像上面的例子一样,     memcpy(new1Darray,a,sizeof(char)* ROWS * COLS)

2)代替(1)或者如果您想要更改数据必须存储的顺序,那么只需按照您想要的方式遍历2D数组(列主要)并逐个复制元素。喜欢(考虑先定义所有变量)

这将按列顺序复制新数组中的元素

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

答案 1 :(得分: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();
    }