Копирование элементов массива - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д