假设我有一个双D阵列。
#define ROWS 3
#define COLS 3
char a[ROWS][COLS]= {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
如何将其值复制到单个数组中。我只想要COLS值。
答案 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();
}