バイナリは構造体の配列を別の配列にコピーします。問題は、それが正常に動作しないと、私は理由を知らないです。すべてが私にとっては妥当であるようです。C/C++バイナリコピー配列関数が機能しません
- 画素が
- pixarr1 [8] [2]、
- pixarr2は2へのポインタである二次元動的配列へのポインタであり、3 unsigned char型の、はsizeof(画素)を有する構造= 3であります3次元ダイナミックアレイ[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です。ポインタの使用に焦点を当てないでください。私はそれらを使用する必要があります。関数の外側と内側にポインタを表示すると、同じアドレスが表示されるので、(論理的に)良いです。
実際にsizeof(ピクセル)を印刷しましたが、それは3ですか? – Kaganar
「正しく動作しません」とはどういう意味ですか? –
最も単純なケースstartline = 0と小さな配列から始めます。それは動作しますか?あなたが得た結果は何ですか?ソース配列と宛先配列を投稿できますか? –