Копирование элементов массива - 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;
}

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

  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
Похожие ответы