what about a linked list?
you can compile and try this:
#include <stdio.h>
#include <stdlib.h>
typedef struct p{
int x,y,z;
struct coord *prev;
struct coord *next;
}coord;
// param current is NULL for the first element

coord *add_coord(coord *current){
coord *newcoord;
if((newcoord = (coord *)malloc(sizeof(coord))) == NULL)
return NULL;
// init the new element and link it
newcoord->prev = current;
newcoord->next = NULL;
newcoord->x = newcoord->y = newcoord->z = 0;
// nextcoorder of the previous element to this element
if(current != NULL)
current->next = newcoord;
return newcoord;
}
int main(){
coord* firstElement;
coord* currentElement;
firstElement = add_coord(NULL);
currentElement = firstElement;
currentElement->x = 3;
currentElement->y = 9;
currentElement->z = 15;
currentElement = add_coord(currentElement);
// now currentElement is the second Element...
currentElement->x = 38;
currentElement->y = 99;
currentElement->z = 35;
// the third and so on...
currentElement = add_coord(currentElement);
currentElement->x = 987;
currentElement->y = 87;
currentElement->z = 25;
currentElement = add_coord(currentElement);
currentElement->x = 4562;
currentElement->y = 1235;
currentElement->z = 1;
currentElement = firstElement;
while(currentElement->next){
printf("x: %d\ny: %d\nz: %d\n\n", currentElement->x,currentElement->y,currentElement->z);
currentElement = currentElement->next;
}
// not to forget the last...
printf("x: %d\ny: %d\nz: %d\n\n", currentElement->x,currentElement->y,currentElement->z);
}
if you insist on using array, you could try
realloc for dynamic memoryallocation

netcomander