#include<stdio.h>
void cat_data(int* data1, const int* data2, int len2);
int main(void)
{
int i;
int data1[7] = { 1,2,3 };
int data2[5] = { 11,12,13,14,15 };
int len2 = sizeof(data2) / sizeof(data2[0]);
cat_data(data1, data2, len2);
for (i = 0; i < sizeof(data1) / sizeof(data1[0]); i++)
{
printf("data1[%d]=%d\n", i
, data1
[i
]); }
return 0;
}
void cat_data(int* data1, const int* data2, int len2)
{
int i = 0, j = -1, k;
while (j == -1)
{
if (data1[i] == 0)
{
j = i;
}
else
{
i++;
}
}
for (k = 0; k < len2; k++)
{
data1[j + k] = data2[k];
}
}
I2luY2x1ZGU8c3RkaW8uaD4Kdm9pZCBjYXRfZGF0YShpbnQqIGRhdGExLCBjb25zdCBpbnQqIGRhdGEyLCBpbnQgbGVuMik7CgppbnQgbWFpbih2b2lkKQp7CglpbnQgaTsKCWludCBkYXRhMVs3XSA9IHsgMSwyLDMgfTsKCWludCBkYXRhMls1XSA9IHsgMTEsMTIsMTMsMTQsMTUgfTsKCWludCBsZW4yID0gc2l6ZW9mKGRhdGEyKSAvIHNpemVvZihkYXRhMlswXSk7CgoJY2F0X2RhdGEoZGF0YTEsIGRhdGEyLCBsZW4yKTsKCglmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGRhdGExKSAvIHNpemVvZihkYXRhMVswXSk7IGkrKykKCXsKCQlwcmludGYoImRhdGExWyVkXT0lZFxuIiwgaSwgZGF0YTFbaV0pOwoJfQoKCXJldHVybiAwOwp9Cgp2b2lkIGNhdF9kYXRhKGludCogZGF0YTEsIGNvbnN0IGludCogZGF0YTIsIGludCBsZW4yKQp7CglpbnQgaSA9IDAsIGogPSAtMSwgazsKCXdoaWxlIChqID09IC0xKQoJewoJCWlmIChkYXRhMVtpXSA9PSAwKQoJCXsKCQkJaiA9IGk7CgkJfQoJCWVsc2UKCQl7CgkJCWkrKzsKCQl9Cgl9Cglmb3IgKGsgPSAwOyBrIDwgbGVuMjsgaysrKQoJewoJCWRhdGExW2ogKyBrXSA9IGRhdGEyW2tdOwoJfQp9CgoK