#include <stdio.h>
void cat_data(int *data1, const int *data2, int len2);
int data1[7] = {1, 2};
int main() {
int data2[5] = {3, 4, 5, 6, 7};
int len2 = 0;
for (int i = 0; i < 5; i++) {
if (data2[i] != 0)
len2++;
else break;
}
cat_data(data1, data2, len2);
for (int i = 0; i < 7; i++) {
printf("data1[%d] = %d\n", i
, data1
[i
]); }
return 0;
}
void cat_data(int *data1, const int *data2, int len2) {
int i;
int len1 = 0;
for (i = 0; i < 7; i++) {
if (data1[i] != 0)
len1++;
else break;
}
int copy_len = 7 - len1;
if (copy_len > len2)
copy_len = len2;
for (i = 0; i < copy_len; i++) {
data1[len1 + i] = data2[i];
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGNhdF9kYXRhKGludCAqZGF0YTEsIGNvbnN0IGludCAqZGF0YTIsIGludCBsZW4yKTsKCmludCBkYXRhMVs3XSA9IHsxLCAyfTsKCmludCBtYWluKCkgewogICAgaW50IGRhdGEyWzVdID0gezMsIDQsIDUsIDYsIDd9OwoKCWludCBsZW4yID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgaWYgKGRhdGEyW2ldICE9IDApIAogICAgICAgICAgICBsZW4yKys7CiAgICAgICAgICAgIGVsc2UgYnJlYWs7CiAgICB9CgkKICAgIGNhdF9kYXRhKGRhdGExLCBkYXRhMiwgbGVuMik7CgogICAgcHJpbnRmKCLpgKPntZDlvozjga5kYXRhMVxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDc7IGkrKykgewogICAgICAgIHByaW50ZigiZGF0YTFbJWRdID0gJWRcbiIsIGksIGRhdGExW2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKdm9pZCBjYXRfZGF0YShpbnQgKmRhdGExLCBjb25zdCBpbnQgKmRhdGEyLCBpbnQgbGVuMikgewogICAgaW50IGk7CgogICAgaW50IGxlbjEgPSAwOwogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAgICAgICAgaWYgKGRhdGExW2ldICE9IDApIAogICAgICAgICAgICBsZW4xKys7CiAgICAgICAgICAgIGVsc2UgYnJlYWs7CiAgICAJfQogICAJaW50IGNvcHlfbGVuID0gNyAtIGxlbjE7CiAgIAkKICAgIGlmIChjb3B5X2xlbiA+IGxlbjIpCiAgICAJY29weV9sZW4gPSBsZW4yOwogCiAgICBmb3IgKGkgPSAwOyBpIDwgY29weV9sZW47IGkrKykgewogICAgICAgIGRhdGExW2xlbjEgKyBpXSA9IGRhdGEyW2ldOwogICAgfQp9