is it possible in C to do an unfix size array like in Java ?

if so, howto ?

thx guys


what do you mean by unfix size array?
in java arrays you'd still need to allocates memory for the elements

can you be more specific or give an example about that?

Edited 4 Years Ago by zeroliken: n/a

i know i need to allocate mem and i can`t find my java code, just restarted programming.

the thing is, i don`t know how many entries the users will enter and i don`t remember how i did this in java.

i have 2 things in mind right now.

1) i ask the user how many entries their gonna do, which i`m not even sure it will work, because they don`t even know themselves how many entries they have to do.

2) or i fix the array high enough and i add a counter and transfert only the (counter) number of entries to the db.

but thx for the support, i`m sure i did work on an array that was expanding according to the inputs. i`ll keep searching.


One common way is to allocate memory in fixed block sizes. When that fills up then allocate a larger array. Here is an example

int array_size = 0; // initial array size
int elements_used = 0; // current number of elements used in the array
int *array = NULL; // initial array is empty

#define BLOCKSIZE 10 // allocate this many elements at a time

int main()
   int number = 0;
   for(;;) // infinite loop
      printf("Enter a number\n");
      scanf("%d", &number);
      // check for array overflow
      if( (elements_used+1) >= array_size)
          // stretch the array
          array_size += BLOCKSIZE;
          array = realloc(array, array_size);
      array[elements_used] = number;

Edited 4 Years Ago by Ancient Dragon: n/a

helpful tip

In short Dynamic allocation

Too bad C doesn't have an ArrayList class like Java or Vector like in C++ ;)

Too bad C doesn't have an ArrayList class like Java or Vector like in C++ ;)

Then it wouldn't be C, would it? :)

Edited 4 Years Ago by Ancient Dragon: n/a

LOL ya c is special, i don`t do much of it, but it`s a nice language.

thx guys for the help.


This question has already been answered. Start a new discussion instead.