構造体の配列を別の配列にバイナリコピーする関数を作成しました。問題はそれが正しく機能しないことです、そして私は理由がわかりません。私にはすべてが大丈夫のようです。
- pixelは、3つのunsigned char、sizeof(pixel)=3の構造体です。
- pixarr1は、2次元の動的配列[8] [2]へのポインターであり、
- pixarr2は、2次元の動的配列[8][n]へのポインターです。たとえば、n = 8、それは重要ではありません。
私はこのようなことをする必要があります:
for(int i=0; i<8; i++) {
for(int y=0; y<2; y++) {
arr2[i][y] = arr1[i][y];
}
}
しかし、私はそれを「バイナリ」にしたいのです。このような:
void copyStruct(pixel*** pixarr1, int startline, int height, pixel*** pixarr2) {
pixel** arr1 = *pixarr1;
pixel** arr2 = *pixarr2;
unsigned char buffer[16];
int sizeofstruct = height*3*8;
int padding;
for(int i=0; i<=sizeofstruct; i+=16) {
if ( i+16 > sizeofstruct) {
padding = sizeofstruct-i;
memcpy(buffer, arr1+i, padding);
memcpy(arr2+(startline*8)+i, buffer, padding);
} else {
memcpy(buffer, arr1+i, 16);
memcpy(arr2+(startline*8)+i, buffer, 16);
}
}
}
私はどのような間違いを犯していますか?
PS。ソースに関する問題をお詫びします。このエディタは..です。
PPS。ポインタの使用に焦点を当てないでください。私はそれらを使わなければなりません。関数の外側と内側にポインターを出力すると、同じアドレスが表示されるので、(私のロジックでは)問題ありません。