#include <stdio.h>
#define ROWS 2
#define COLS 3
void copy_ptr(double *src, double *dest, int len);
void copy_ptr2d(int rows, int cols, double (*src)[cols], double (*dest)[cols]);
int main(void) {
double array[ROWS][COLS] = { { 12.3, 55.1 }, { 33.6, 21.9, 90.8 } };
double array2[ROWS][COLS];
printf("Array { { 12.3, 55.1 }, { 33.6, 21.9, 90.8 } }\n"); copy_ptr2d(ROWS, COLS, array, array2);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("array2[%d][%d]: %.1f\n", i
, j
, array2
[i
][j
]); }
}
return 0;
}
void copy_ptr2d(int rows, int cols, double (*src)[cols], double (*dest)[cols]){
for (int i = 0; i < rows; i++) {
copy_ptr(*src++, *dest++, cols);
}
}
void copy_ptr(double *src, double *dest, int len) {
for (int i = 0; i < len; i++) {
*dest++ = *src++;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFJPV1MgMgojZGVmaW5lIENPTFMgMwoKdm9pZCBjb3B5X3B0cihkb3VibGUgKnNyYywgZG91YmxlICpkZXN0LCBpbnQgbGVuKTsKdm9pZCBjb3B5X3B0cjJkKGludCByb3dzLCBpbnQgY29scywgZG91YmxlICgqc3JjKVtjb2xzXSwgZG91YmxlICgqZGVzdClbY29sc10pOwoKaW50IG1haW4odm9pZCkgewoJZG91YmxlIGFycmF5W1JPV1NdW0NPTFNdID0geyB7IDEyLjMsIDU1LjEgfSwgeyAzMy42LCAyMS45LCA5MC44IH0gfTsKCWRvdWJsZSBhcnJheTJbUk9XU11bQ09MU107CglwcmludGYoIkFycmF5IHsgeyAxMi4zLCA1NS4xIH0sIHsgMzMuNiwgMjEuOSwgOTAuOCB9IH1cbiIpOwoJcHJpbnRmKCJBcnJheSBjb3B5OlxuIik7Cgljb3B5X3B0cjJkKFJPV1MsIENPTFMsIGFycmF5LCBhcnJheTIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBST1dTOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IENPTFM7IGorKykgewoJCQlwcmludGYoImFycmF5MlslZF1bJWRdOiAlLjFmXG4iLCBpLCBqLCBhcnJheTJbaV1bal0pOwoJCX0KCQlwcmludGYoIlxuIik7Cgl9CglyZXR1cm4gMDsKfQoKdm9pZCBjb3B5X3B0cjJkKGludCByb3dzLCBpbnQgY29scywgZG91YmxlICgqc3JjKVtjb2xzXSwgZG91YmxlICgqZGVzdClbY29sc10pewoJZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKCQljb3B5X3B0cigqc3JjKyssICpkZXN0KyssIGNvbHMpOwoJfQp9Cgp2b2lkIGNvcHlfcHRyKGRvdWJsZSAqc3JjLCBkb3VibGUgKmRlc3QsIGludCBsZW4pIHsKCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKCQkqZGVzdCsrID0gKnNyYysrOwoJfQp9