Hana
Hana

Reputation: 613

C language copying arrays - error in code

I am trying to copy elements from two arrays into a third.
I can't understand why it doesn't work.
I made sure that the two arrays are filled properly, but for some reason, the actual copying doesn't work- when I print the elements of the arr3, I get some random numbers.

#include <stdio.h>

int main()
{
    int arr1[10], arr2[10], arr3[20];
    int i, n;


    printf("Enter a number of elements to be stored in each array (up to 10): ");
    scanf("%d", &n);
    printf("Enter the %d elements to the first array:\n", n);
    for (i = 0; i < n; i++)
    {
        printf("Element %d: ", i + 1);
        scanf("%d", &arr1[i]);
    }
    printf("Enter the %d elements to the second array:\n", n);
    for (i = 0; i < n; i++)
    {
        printf("Element %d: ", i + 1);
        scanf("%d", &arr2[i]);
    }
/*
// A test to make sure first 2 array are filled by the user- works

    for(i = 0; i < n; i++)
        printf("%d  ", arr1[i]);
    for(i = 0; i < n; i++)
        printf("%d  ", arr2[i]);

*/
    // something wrong here, the elements are not coppied to the third array
    for(i = 0; i < n; i++);
            arr3[i] = arr1[i];
    for(i = n; i < 2 * n; i++)
        arr3[i] = arr2[i];


    for(i = 0; i < 2 * n; i++)
        printf("%d\n", arr3[i]);

    return(0);
}

Upvotes: 1

Views: 90

Answers (2)

cleblanc
cleblanc

Reputation: 3688

You're reading past the end of arr2, try this;

for (i = 0; i < n; i++)
        arr3[i] = arr1[i];
for (i = 0; i < n; i++)
    arr3[n+i] = arr2[i];

Upvotes: 3

mudit Panwar
mudit Panwar

Reputation: 57

That's because your code is reading arr2[10],arr2[11] ..... arr2[19] (if n=10 ), all these values do not exist because arr2 only has 10 values. you can use this.

for (i=0; i<n; i++)
arr3[n+i]=arr2[i];

or

for (i=n; i<n*2; i++)
arr3[i]=arr2[i-n];

Upvotes: -1

Related Questions