假设我有一个两个 D 数组。
#define ROWS 3
#define COLS 3
char a[ROWS][COLS]= {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
如何将其值复制到单个数组中。我只想要 COLS 值。
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++;
}
}
它非常简单。让我们看看“如何?” -
#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();
}