O con una malloc iniziale e una serie di realloc o usando una struttura di dati complessa, come una lista (che, se devi aggiungere un elemento alla volta, è di solito la soluzione migliore).