-4

假设我有一个两个 D 数组。

#define ROWS 3
#define COLS 3

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

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

4

2 回答 2

1

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

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

就像上面的例子,memcpy(new1Darray, a, 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++;
    }
}  
于 2013-04-04T01:49:53.113 回答
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();
    }
于 2013-04-04T01:53:53.633 回答