Programa C para copiar una matriz a otra usando punteros

Programa C para copiar una matriz a otra usando punteros

Escriba un programa en C para copiar elementos de un arreglo a otro arreglo usando punteros. Cómo copiar elementos de un arreglo de un arreglo a otro usando punteros. Lógica para copiar una matriz a otra matriz usando punteros en programación C.

Ejemplo

Entrada

Input array1 elements: 10 -1 100 90 87 0 15 10 20 30

Salida

Array1: 10 -1 100 90 87 0 15 10 20 30
Array2: 10 -1 100 90 87 0 15 10 20 30

Conocimiento requerido

Programación básica en C, matriz, punteros, matriz y punteros

Lógica para copiar una matriz a otra matriz usando punteros

Lógica descriptiva paso a paso para copiar un arreglo a otro usando punteros.

  1. Ingrese el tamaño y los elementos en la primera matriz, guárdelo en alguna variable, digamos size y source_array .
  2. Declarar otra matriz, digamos dest_array para almacenar una copia de source_array .
  3. Declarar un puntero a source_array di *source_ptr = source_array y un puntero más a dest_array di *dest_ptr = dest_array .
  4. Copiar elementos de source_ptr a desc_ptr usando *desc_ptr = *source_ptr .
  5. Indicadores de incremento source_ptr y desc_ptr por 1.
  6. Repita los pasos 3 y 4 hasta source_ptr existe en source_arr rango de memoria.

Programa para copiar una matriz a otra usando punteros

/**
 * C program to copy an array to another array using pointers
 */

#include <stdio.h>

#define MAX_SIZE 100 // Maximum array size


/* Function declaration to print array */
void printArray(int arr[], int size);


int main()
{
    int source_arr[MAX_SIZE], dest_arr[MAX_SIZE];
    int size, i;

    int *source_ptr = source_arr;   // Pointer to source_arr
    int *dest_ptr   = dest_arr;     // Pointer to dest_arr

    int *end_ptr;


    /*
     * Input size and elements in source array
     */
    printf("Enter size of array: ");
    scanf("%d", &size);
    printf("Enter elements in array: ");
    for (i = 0; i < size; i++)
    {
        scanf("%d", (source_ptr + i));
    }


    // Pointer to last element of source_arr
    end_ptr = &source_arr[size - 1];


    /* Print source and destination array before copying */
    printf("\nSource array before copying: ");
    printArray(source_arr, size);

    printf("\nDestination array before copying: ");
    printArray(dest_arr, size);



    /*
     * Run loop till source_ptr exists in source_arr
     * memory range.
     */
    while(source_ptr <= end_ptr)
    {
        *dest_ptr = *source_ptr;

        // Increment source_ptr and dest_ptr
        source_ptr++;
        dest_ptr++;
    }


    /* Print source and destination array after copying */
    printf("\n\nSource array after copying: ");
    printArray(source_arr, size);

    printf("\nDestination array after copying: ");
    printArray(dest_arr, size);


    return 0;
}


/**
 * Function to print array elements.
 * 
 * @arr     Integer array to print.
 * @size    Size of array.
 */
void printArray(int *arr, int size)
{
    int i;

    for (i = 0; i < size; i++)
    {
        printf("%d, ", *(arr + i));
    }
}

Salida

Enter size of array: 10
Enter elements in array: 10 -1 100 90 87 0 15 10 20 30

Source array before copying: 10, -1, 100, 90, 87, 0, 15, 10, 20, 30,
Destination array before copying: 0, 0, 127, 127, 0, 1, 0, 16777472, 0, 0,

Source array after copying: 10, -1, 100, 90, 87, 0, 15, 10, 20, 30,
Destination array after copying: 10, -1, 100, 90, 87, 0, 15, 10, 20, 0,

Publicaciones recomendadas

  • Índice de ejercicios de programación de matrices y arreglos.
  • Programa en C para sumar dos números usando punteros.
  • Programa en C para usar punteros.
  • Programa en C para intercambiar dos números usando punteros.
  • Programa en C para ingresar e imprimir elementos de matriz usando punteros.