C Program to Insert an Element in an Array

In this article, you will learn and get code about inserting an element in an array in following ways:

  • Inserts Element at the End of an Array
  • Inserts Element at a Particular Position

Let's first create a program, that asks from user to enter 5 array elements and an element which has to be insert at the end of array as shown in the program given below:

#include<stdio.h>
#include<conio.h>
int main()
{
    int arr[10], i, element;
    printf("Enter 5 Array Elements: ");
    for(i=0; i<5; i++)
        scanf("%d", &arr[i]);
    printf("\nEnter Element to Insert: ");
    scanf("%d", &element);
    arr[i] = element;
    printf("\nThe New Array is:\n");
    for(i=0; i<6; i++)
        printf("%d  ", arr[i]);
    getch();
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is its sample run:

c program insert element in array

Enter any 5 numbers as 5 array elements say 10, 20, 30, 40, 50 and then enter an element say 60 to insert at the end of array. Here is the sample run:

insert element in array c

The block of code given below:

for(i=0; i<5; i++)
    scanf("%d", &arr[i]);

is used to receive the input (as 5 array elements) from user. When the value of i becomes 5, means the condition of for loop evaluates to be false, because 5 is not less than 5. So using the statement,

arr[i] = element;

Value of element gets initialized to arr[5]. Because i's last value is 5. Therefore the element gets stored at last index or at the end of given array.

Insert Element at a Particular Position

This program inserts element at a particular position. In this program, user is allowed to define the size for an array.

#include<stdio.h>
#include<conio.h>
int main()
{
    int arr[50], i, element, pos, size;
    printf("How many Element to Store in Array ? ");
    scanf("%d", &size);
    printf("Enter %d Array Elements: ", size);
    for(i=0; i<size; i++)
        scanf("%d", &arr[i]);
    printf("\nEnter Element to Insert: ");
    scanf("%d", &element);
    printf("\nAt what position ? ");
    scanf("%d", &pos);
    for(i=size; i>=pos; i--)
        arr[i] = arr[i-1];
    arr[i] = element;
    size++;
    printf("\nThe New Array is:\n");
    for(i=0; i<size; i++)
        printf("%d  ", arr[i]);
    getch();
    return 0;
}

Let's suppose user has entered:

  • Array Size as 10
  • Array Elements as 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  • Element to Insert as 60
  • Position as 6

Then new array looks like, 1, 2, 3, 4, 5, 60, 6, 7, 8, 9, 10. Here is its sample run:

insert element at position c

As you can see from sample run given above, elements from the given position (where the new element gets inserted), gets shifted one index forward.

Based on the user input given above, the dry run of this program goes like:

  • 10 elements 1, 2, 3, ..., 10 gets initialized to arr[0], arr[1], arr[2], ..., arr[9]
  • Now the value of i is 10
  • 60 (element to insert) gets initialized to element variable
  • 6 (position) gets initialized to pos
  • Now shifts all the element after the given position (6), one index forward, starts from last element. Therefore,
    • arr[i-1] or arr[10-1] or arr[9] or 10 goes to arr[i] or arr[10]
    • the value of i gets decremented and becomes 9. Because 9 is greater than the value of pos (6). Therefore again
    • arr[i-1] or arr[9-1] or arr[8] or 9 goes to arr[i] or arr[9]
    • and so on, until the value of i becomes less than the value of pos (6)
  • In this way, 10, 9, 8, 7, 6 goes to arr[10], arr[9], arr[8], arr[7], arr[6]
  • And the value of i right now is 5
  • Now initialize the element (to insert) 60 at arr[i] or arr[5]
  • Because, indexing starts from 0, therefore the element at 5th index is referred as 6th position element
  • Because one extra element gets inserted in the given array. Therefore increment the value of size by 1
  • Finally print the array

Same Program in Other Languages

C Online Test


« Previous Program Next Program »



Like/Share Us on Facebook 😋