While using C, I don't know of a way to "overload" the printf function to display your struct. I can't remember if structs allow for functions (I don't believe they do), but in C++ classes/structs, you have the option of creating a Display() method that can print your each of your structures.
As for deleting/creating objects, I'm not very familiar with C in that sense either, but I do believe your only option is malloc/free.
What I would do is start off with an array with "this number of elements" and for each cell I would add a flag to indicate whether the entry is valid or not. Say you want to store 2 elements, and maybe more later.
This comes is practical in a sense that you don't have to allocate new space, copy data, free old space every single time you want to add an element. This is what sophisticated containers do actually.
You can either specify a suitable maximum value for the size of the array or dynamically allocate a memory by using malloc, realloc, and free. realloc copies elemebts of the source memory to the destination memory.
To print elements of the array you should of course use a loop. To delete an element you should reorder your array such a way that the deleted element would be the last in the array and then use realloc function.
As for deleting/creating objects, I'm not very familiar with C in that sense either, but I do believe your only option is malloc/free.
Malloc isn't so bad. Three things to know, 1) It returns a void pointer (so needs casting), 2) it needs an actual Byte amount, 3) The value of the pointer is NULL if not allocated:
1 2 3 4
int *i = NULL;
int howMany = 5;
i = (int*) malloc (howMany * sizeof(int));
if (i == NULL) printf("couldn't do it\n");