Semplicemente non può. Per allocare una certa quantità di memoria... devi sapere questa quantità! Quindi qui le strategie possibili sono principalmente due:
1. fai una prima passata per vedere quanti elementi devi memorizzare, poi allochi l'array, poi fai una seconda passata per memorizzare effettivamente i dati nell'array
2. allochi un po' di spazio (una tua stima delle dimensioni) e riempi l'array finché c'è posto. Quando lo spazio è esaurito, ne allochi dell'altro con la funzione realloc.
Vedi tu quale ti piace di più... Probabilmente ci sono anche altre idee, ma queste mi sembrano già un discreto punto di partenza.