user3326078
user3326078

Reputation: 627

Can someone explain how to append an element to an array in C programming?

If I want to append a number to an array initialized to int, how can I do that?

int arr[10] = {0, 5, 3, 64};
arr[] += 5; //Is this it?, it's not working for me...

I want {0,5, 3, 64, 5} in the end.

I'm used to Python, and in Python there is a function called list.append that appends an element to the list automatically for you. Does such function exist in C?

Upvotes: 49

Views: 321929

Answers (8)

hlorand
hlorand

Reputation: 1406

If you want a method that always works, then store the initial size of the array in an int size = 0; variable and increase it every time you append a new element: array[size++] = ...

int array[5];
int size = 0; // you can set the size variable larger 
              // if there are already elements in the array

array[size++] = 12;   // append 1. element
array[size++] = 23;   // append 2. element
array[size++] = 34;   // append 3. element
                      // ...

Upvotes: 0

RickyLo
RickyLo

Reputation: 129

For some people which might still see this question, there is another way on how to append another array element(s) in C. You can refer to this blog which shows a C code on how to append another element in your array.

But you can also use memcpy() function, to append element(s) of another array. You can use memcpy()like this:

#include <stdio.h>
#include <string.h>

int main(void)
{

int first_array[10] = {45, 2, 48, 3, 6};
int scnd_array[] = {8, 14, 69, 23, 5};
int i;

// 5 is the number of the elements which are going to be appended
memcpy(first_array + 5, scnd_array, 5 * sizeof(int));

// loop through and print all the array
for (i = 0; i < 10; i++) {
    printf("%d\n", a[i]);
  }

}

Upvotes: 2

ashutro
ashutro

Reputation: 1

void Append(int arr[],int n,int ele){
    int size = n+1; // increasing the size
    int arrnew[size]; // Creating the new array:

    for(int i = 0; i<size;i++){
        arrnew[i] = arr[i]; // copy the element old array to new array:

    }
    arrnew[n] = ele; // Appending the element:
}


by above simple method you can append the value 

Upvotes: 0

Amadan
Amadan

Reputation: 198324

There are only two ways to put a value into an array, and one is just syntactic sugar for the other:

a[i] = v;
*(a+i) = v;

Thus, to put something as the element at index 4, you don't have any choice but arr[4] = 5.

Upvotes: 5

Scott
Scott

Reputation: 5848

Short answer is: You don't have any choice other than:

arr[4] = 5;

Upvotes: 1

bitcell
bitcell

Reputation: 951

int arr[10] = {0, 5, 3, 64};
arr[4] = 5;

EDIT: So I was asked to explain what's happening when you do:

int arr[10] = {0, 5, 3, 64};

you create an array with 10 elements and you allocate values for the first 4 elements of the array.

Also keep in mind that arr starts at index arr[0] and ends at index arr[9] - 10 elements

arr[0] has value 0;
arr[1] has value 5;
arr[2] has value 3;
arr[3] has value 64;

after that the array contains garbage values / zeroes because you didn't allocated any other values

But you could still allocate 6 more values so when you do

arr[4] = 5;

you allocate the value 5 to the fifth element of the array.

You could do this until you allocate values for the last index of the arr that is arr[9];

Sorry if my explanation is choppy, but I have never been good at explaining things.

Upvotes: 43

Vignesh kanna
Vignesh kanna

Reputation: 1

If you have a code like int arr[10] = {0, 5, 3, 64}; , and you want to append or add a value to next index, you can simply add it by typing a[5] = 5.

The main advantage of doing it like this is you can add or append a value to an any index not required to be continued one, like if I want to append the value 8 to index 9, I can do it by the above concept prior to filling up before indices. But in python by using list.append() you can do it by continued indices.

Upvotes: 0

Arjun Prasad
Arjun Prasad

Reputation: 59

You can have a counter (freePosition), which will track the next free place in an array of size n.

Upvotes: 2

Related Questions