Копирование элементов массива - C (СИ)
Формулировка задачи:
Подскажите пожалуйста как написать функцию для копирования всех элементов двух одномерных массивов в третий одномерный массив.
Решение задачи: «Копирование элементов массива»
textual
Листинг программы
- #include <stdio.h>
- #define N 6
- #define M 4
- #define K 10
- int *copyarr(int *destArr, size_t destArrLen, int *srcArr, size_t srcArrLen, int *p )
- {
- int *sa = srcArr;
- int *sae = srcArr+srcArrLen;
- if(p!=NULL)
- {
- if((destArrLen-(p-destArr))<srcArrLen)return NULL;
- int * pa = p;
- while(*sa!=*sae){*pa = *sa; ++sa; ++pa; } return pa;
- }
- else
- {
- if(destArrLen < srcArrLen)return NULL;
- int *da = destArr;
- while(*sa!=*sae){*da = *sa; ++sa; ++da; } return da;
- }
- }
- int main(void)
- {
- int c[K], a[N] = {1,2,3,4,5,6}, b[M] = {7,8,9,10};
- int *p; int i;
- if((p = copyarr(c, K, a, N, NULL))==NULL)printf("Error!\n");
- if(copyarr(c, K, b, M, p)==NULL)printf("Error!\n");
- for(i=0; i<K; ++i)printf("%d ", c[i]);
- return 0;
- }
Объяснение кода листинга программы
- В функции
copyarr
идет копирование элементов из одного массива в другой с указанием размера и промежуточной переменнойp
, которая указывает на место в целевом массиве, с которого нужно начать копирование. - Если
p
не равноNULL
, то проверяется, достаточно ли места в целевом массиве для копирования. Если места недостаточно, то возвращаетсяNULL
. - Копирование элементов выполняется с помощью цикла
while
, который продолжается до тех пор, пока не будет достигнут конец исходного массива. - В функции
main
создается массивc
с длинойK
, инициализируются массивыa
иb
, и задаетсяp
как указатель на первый элемент массиваc
. - Вызывается функция
copyarr
для копирования элементов из массиваa
вc
с указаниемp
как начального индекса вc
. - Вызывается функция
copyarr
для копирования элементов из массиваb
вc
с указаниемp
как начального индекса вc
. - Выводится содержимое массива
c
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д