Копирование элементов массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста как написать функцию для копирования всех элементов двух одномерных массивов в третий одномерный массив.

Решение задачи: «Копирование элементов массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define N 6
  3. #define M 4
  4. #define K 10
  5. int *copyarr(int *destArr, size_t destArrLen, int *srcArr, size_t srcArrLen, int *p )
  6. {
  7.     int *sa = srcArr;
  8.     int *sae = srcArr+srcArrLen;
  9.     if(p!=NULL)
  10.     {
  11.         if((destArrLen-(p-destArr))<srcArrLen)return NULL;
  12.         int * pa = p;
  13.        
  14.         while(*sa!=*sae){*pa = *sa; ++sa; ++pa; } return pa;
  15.     }
  16.     else
  17.     {
  18.         if(destArrLen < srcArrLen)return NULL;
  19.         int *da = destArr;
  20.         while(*sa!=*sae){*da = *sa; ++sa; ++da; } return da;
  21.     }
  22. }
  23. int main(void)
  24. {
  25.  
  26.   int c[K], a[N] = {1,2,3,4,5,6}, b[M] = {7,8,9,10};
  27.   int *p; int i;
  28.   if((p = copyarr(c, K, a, N, NULL))==NULL)printf("Error!\n");
  29.   if(copyarr(c, K, b, M, p)==NULL)printf("Error!\n");
  30.   for(i=0; i<K; ++i)printf("%d ", c[i]);
  31. return 0;
  32. }

Объяснение кода листинга программы

  1. В функции copyarr идет копирование элементов из одного массива в другой с указанием размера и промежуточной переменной p, которая указывает на место в целевом массиве, с которого нужно начать копирование.
  2. Если p не равно NULL, то проверяется, достаточно ли места в целевом массиве для копирования. Если места недостаточно, то возвращается NULL.
  3. Копирование элементов выполняется с помощью цикла while, который продолжается до тех пор, пока не будет достигнут конец исходного массива.
  4. В функции main создается массив c с длиной K, инициализируются массивы a и b, и задается p как указатель на первый элемент массива c.
  5. Вызывается функция copyarr для копирования элементов из массива a в c с указанием p как начального индекса в c.
  6. Вызывается функция copyarr для копирования элементов из массива b в c с указанием p как начального индекса в c.
  7. Выводится содержимое массива c.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.538 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы